home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1995 October / EnigmA AMIGA RUN 01 (1995)(G.R. Edizioni)(IT)[!][issue 1995-10][Aminet 7].iso / Aminet / comm / misc / avmNfax1_33.lha / AVMSuite / rexx / stdtail.avm < prev    next >
Text File  |  1994-06-24  |  89KB  |  3,229 lines

  1. /* TITLE: avm:rexx/stdtail.avm */
  2. /* This is the standard tail */
  3. exit
  4.  
  5. exit
  6.  
  7. mailboxDir: procedure
  8.     parse arg mailbox
  9.  
  10.     return 'avm:' || mailbox || '/'
  11.  
  12. logFile: procedure
  13.     parse arg mailbox, magiccookie
  14.  
  15.     return 'avm:' || mailbox || '/logs/' || magiccookie
  16.  
  17. voiceFile: procedure
  18.     parse arg mailbox, magiccookie
  19.  
  20.         if (verify(magiccookie, '/:', 'M') = 0) then
  21.           return 'avm:' || mailbox || '/voices/' || magiccookie
  22.         else
  23.           return magiccookie
  24.  
  25. makeUniqueFile: procedure
  26.     if arg() ~= 0 then do
  27.         rc = "makeUniqueFile: bad args"
  28.         signal error
  29.     end
  30.     return address() || '.' || date('i') || '.' || time('s') || '.' || random(1, 999, time('s'))
  31.  
  32. convertToDate: procedure
  33.     if arg() ~= 1 then do
  34.         rc = "convertToDate: bad args"
  35.         signal error
  36.     end
  37.     parse arg timeInC
  38.  
  39.     actualTime = (timeInC - (2922)*86400) // (86400)
  40.     actualDate = (timeInC - actualTime - 2922*86400) % 86400
  41.  
  42.     return actualDate /* returning it in 'internal' format */
  43.  
  44. convertToTime: procedure
  45.     if arg() ~= 1 then do
  46.         rc = "convertToTime: bad args"
  47.         signal error
  48.     end
  49.     parse arg timeInC
  50.     
  51.     actualTime = (timeInC - (2922)*86400) // (86400)
  52.  
  53.     return actualTime
  54.  
  55. cTime: procedure
  56.     /* 2922 = 8*365 + 2 */
  57.     /* 86400 = 24*60*60 */
  58.     return (date('i')+2922)*86400 + time('s')
  59.  
  60. /* this returns a handle that you must use after initializing log. */
  61. initLogEntry: procedure expose log.
  62.     if arg() ~= 0 then do
  63.         rc = "initLogEntry: bad args"
  64.         signal error
  65.     end
  66.     
  67.     drop log.
  68.         log. = ''
  69.  
  70.         acidname = getclip(address() || 'CIDNAME')
  71.         acidnumber = getclip(address() || 'CIDNUMBER')
  72.  
  73.     /* 2922 = 8*365 + 2 */
  74.     /* 86400 = 24*60*60 */
  75.     log.time = (date('i')+2922)*86400 + time('s')
  76.     log.cidname = acidname
  77.     log.cidnumber = acidnumber
  78.  
  79.     return
  80.  
  81. loadLogEntry: procedure expose log.
  82.     if arg() ~= 2 then do
  83.         rc = "loadLogEntry: bad args"
  84.         signal error
  85.     end
  86.     parse arg mailbox, handle
  87.  
  88.         drop log.
  89.         log. = ''
  90.  
  91.     if ~exists(mailboxDir(mailbox)) then do
  92.         call showDebugger('Dir=' || mailboxDir(mailbox) 'does not exist')
  93.         return
  94.     end
  95.  
  96.     opened = open(handle, logFile(mailbox, handle), 'r')
  97.         if opened then do
  98.         call showDebugger('Loading entry' logFile(mailbox, handle))
  99.         do while ~eof(handle)
  100.             line = readln(handle)
  101.             parse upper var line variable '=' value
  102.             log.variable = value
  103.         end
  104.         call close(handle)
  105.     end; else call showDebugger('Could not load' logFile(mailbox, handle))
  106.     return
  107.  
  108. /* pass a handle here */
  109. saveLogEntry: procedure expose log.
  110.     if arg() ~= 2 then do
  111.         rc = "saveLogEntry: bad args"
  112.         signal error
  113.     end
  114.     parse arg mailbox, handle
  115.  
  116.     if ~exists(mailboxDir(mailbox)) then do
  117.         call showDebugger('Dir=' || mailboxDir(mailbox) 'does not exist')
  118.         return
  119.     end
  120.  
  121.     opened = open(handle, logFile(mailbox, handle), 'w')
  122.  
  123.     if opened then do
  124.         call showDebugger('Saving entry' logFile(mailbox, handle))
  125.         call writeln(handle, 'TYPE=' || log.type)
  126.         call writeln(handle, 'TIME=' || log.time)
  127.         call writeln(handle, 'LENGTH=' || log.length)
  128.  
  129.         call writeln(handle, 'ORIGMAILBOX=' || log.origmailbox)
  130.  
  131.         call writeln(handle, 'CIDNAME=' || log.cidname)
  132.         call writeln(handle, 'CIDNUMBER=' || log.cidnumber)
  133.  
  134.         call writeln(handle, 'COMMENT=' || log.comment)
  135.  
  136.         call writeln(handle, 'FILENAME=' || log.filename)
  137.         call writeln(handle, 'ALTFILENAME=' || log.altfilename)
  138.  
  139.         call writeln(handle, 'RETURNNUMBER=' || log.returnnumber)
  140.         call writeln(handle, 'RETURNSENDFUNC=' || log.returnsendfunc)
  141.         call writeln(handle, 'RETURNSTATUS=' || log.returnstatus)
  142.  
  143.         call writeln(handle, 'RETURNRETRY=' || log.returnretry)
  144.         call writeln(handle, 'RETURNINTERVAL=' || log.returninterval)
  145.  
  146.         call close(handle)
  147.         address rexx 'broadcast' 'addtomailbox' mailbox handle
  148.     end; else call showDebugger('Could not save' logFile(mailbox, handle))
  149.  
  150.     return
  151.  
  152. /* pass a handle here */
  153. updateLogEntry: procedure expose log.
  154.     if arg() ~= 2 then do
  155.         rc = "updateLogEntry: bad args"
  156.         signal error
  157.     end
  158.     parse arg mailbox, handle
  159.  
  160.     if ~exists(mailboxDir(mailbox)) then do
  161.         call showDebugger('Dir=' || mailboxDir(mailbox) 'does not exist')
  162.         return
  163.     end
  164.  
  165.     if ~exists(logFile(mailbox, handle)) then do
  166.         call showDebugger('Unable to update non-existent' logFile(mailbox, handle))
  167.         return
  168.     end
  169.     opened = open(handle, logFile(mailbox, handle), 'w')
  170.  
  171.     if opened then do
  172.         call showDebugger('Updating entry' logFile(mailbox, handle))
  173.         call writeln(handle, 'TYPE=' || log.type)
  174.         call writeln(handle, 'TIME=' || log.time)
  175.         call writeln(handle, 'LENGTH=' || log.length)
  176.  
  177.         call writeln(handle, 'ORIGMAILBOX=' || log.origmailbox)
  178.  
  179.         call writeln(handle, 'CIDNAME=' || log.cidname)
  180.         call writeln(handle, 'CIDNUMBER=' || log.cidnumber)
  181.  
  182.         call writeln(handle, 'COMMENT=' || log.comment)
  183.  
  184.         call writeln(handle, 'FILENAME=' || log.filename)
  185.         call writeln(handle, 'ALTFILENAME=' || log.altfilename)
  186.  
  187.         call writeln(handle, 'RETURNNUMBER=' || log.returnnumber)
  188.         call writeln(handle, 'RETURNSENDFUNC=' || log.returnsendfunc)
  189.         call writeln(handle, 'RETURNSTATUS=' || log.returnstatus)
  190.  
  191.         call writeln(handle, 'RETURNRETRY=' || log.returnretry)
  192.         call writeln(handle, 'RETURNINTERVAL=' || log.returninterval)
  193.  
  194.         call close(handle)
  195.         address rexx 'broadcast' 'refreshmailboxentry' mailbox handle
  196.     end; else call showDebugger('Could not update' logFile(mailbox, handle))
  197.  
  198.     return
  199.  
  200.  
  201.  
  202. showDebugger: procedure
  203.     if arg() ~= 1 then do
  204.         say "showDebugger: ERROR"
  205.         exit 20
  206.     end
  207.  
  208.     parse arg debuggerInfo
  209.     
  210.     firstLine = sourceline(1)
  211.     parse var firstLine '/*' 'TITLE:' title '*/'
  212.     if showlist('p', 'AVMLOGGER') then
  213.         address 'AVMLOGGER' 'add' title ':' debuggerInfo
  214.     else
  215.         say title ':' debuggerInfo
  216.  
  217.     return 
  218.  
  219. /*-----------------------------------------------------------------------*/
  220. /*                         signal processing                             */
  221.  
  222. arexxerror:
  223. error:
  224.     call showDebugger("Error" rc "at line" sigl)
  225.     exit 20
  226.  
  227. break_c:
  228. halt:
  229.     call showDebugger("Halt/Break_C at line" sigl)
  230.     exit 20
  231.  
  232. novalue:
  233.     call showDebugger("No value at line" sigl)
  234.     exit 20
  235.  
  236. syntax:
  237.     call showDebugger("Syntax error" rc "at line" sigl)
  238.     exit 20
  239.  
  240. exit
  241.  
  242. /* this requires logfunctions.avm */
  243.  
  244. loadMailbox: procedure expose mailbox.
  245.     if arg() ~= 1 then do
  246.         rc = "loadMailbox: bad args"
  247.         signal error
  248.     end
  249.  
  250.         mailbox. = ''
  251.     parse arg mailbox
  252.  
  253.     handle = 'mailboxconfig'
  254.     opened = open(handle, mailboxDir(mailbox) || 'mailbox.cfg', 'r')
  255.     if opened then do
  256.         do while ~eof(handle)
  257.             line = readln(handle)
  258.             parse upper var line variable '=' value
  259.             mailbox.variable = value
  260.         end
  261.         call close(handle)
  262.     end
  263.     return
  264.  
  265. /* pass a handle here */
  266. saveMailbox: procedure expose mailbox.
  267.     if arg() ~= 1 then do
  268.         rc = "saveMailbox: bad args"
  269.         signal error
  270.     end
  271.     parse arg mailbox
  272.  
  273.     handle = 'mailboxconfig'
  274.     opened = open(handle, mailboxDir(mailbox) || 'mailbox.cfg', 'w')
  275.  
  276.     if opened then do
  277.         call writeln(handle, 'PASSWORD=' || mailbox.password)
  278.  
  279.         call writeln(handle, 'AUTOFAXFORWARDB=' || mailbox.autofaxforwardb)
  280.         call writeln(handle, 'AUTOFAXFORWARD=' || mailbox.autofaxforward)
  281.         call writeln(handle, 'AUTOFAXFORWARDSCRIPT=' || mailbox.autofaxforwardscript)
  282.  
  283.         call writeln(handle, 'AUTOFORWARDB=' || mailbox.autoforwardb)
  284.         call writeln(handle, 'AUTOFORWARDONDEMAND=' || mailbox.autoforwardondemand)
  285.         call writeln(handle, 'AUTOFORWARD=' || mailbox.autoforward)
  286.         call writeln(handle, 'AUTOFORWARDSCRIPT=' || mailbox.autoforwardscript)
  287.  
  288.         call writeln(handle, 'AUTOPAGEB=' || mailbox.autopageb)
  289.         call writeln(handle, 'AUTOPAGEONDEMAND=' || mailbox.autopageondemand)
  290.         call writeln(handle, 'AUTOPAGE=' || mailbox.autopage)
  291.         call writeln(handle, 'AUTOPAGESCRIPT=' || mailbox.autopagescript)
  292.  
  293.         call writeln(handle, 'AUTOALERTB=' || mailbox.autoalertb)
  294.         call writeln(handle, 'AUTOALERTONDEMAND=' || mailbox.autoalertondemand)
  295.         call writeln(handle, 'AUTOALERTSCRIPT=' || mailbox.autoalertscript)
  296.  
  297.         call close(handle)
  298.     end
  299.  
  300.     return
  301.  
  302. /* TITLE: avm:rexx/getnumber.avm */
  303. getnumber:
  304. procedure
  305.  
  306. aagetnumberagain:
  307. 'playvoice' 'avm:voices/GetNumber'
  308. action = rc
  309. select
  310.   when action = 0 then nop
  311.   when action = 1 then nop
  312.   when action = 4 then signal stdfax
  313.   when action = 5 then signal stddata
  314.   when action = 8 then signal stdbusy
  315.   when action = 12 then signal stdabort
  316.   when action = 14 then signal stderror
  317.   when action = 16 then signal stderror
  318.   otherwise signal arexxerror
  319. end
  320.  
  321. 'readkeysuntil' '#' '15' '7'
  322. action = rc
  323. if action = 0 then value = result
  324. select
  325.   when action = 0 then do; number = value; end
  326.   when action = 4 then signal stdfax
  327.   when action = 5 then signal stddata
  328.   when action = 8 then signal stdbusy
  329.   when action = 10 then do; number = ''; end
  330.   when action = 12 then signal stdabort
  331.   when action = 14 then signal stderror
  332.   when action = 16 then signal stderror
  333.   otherwise signal arexxerror
  334. end
  335.  
  336. 'playvoice' 'avm:voices/NumberEntered'
  337. action = rc
  338. select
  339.   when action = 0 then nop
  340.   when action = 1 then nop
  341.   when action = 4 then signal stdfax
  342.   when action = 5 then signal stddata
  343.   when action = 8 then signal stdbusy
  344.   when action = 12 then signal stdabort
  345.   when action = 14 then signal stderror
  346.   when action = 16 then signal stderror
  347.   otherwise signal arexxerror
  348. end
  349.  
  350. call playNumber(number)
  351.  
  352. aagetnumbermenu:
  353. call aapresentmenu('avm:voices/numbercorrect', '02#*', '3')
  354. action = result
  355. select
  356.   when action = '=0' then signal aagetnumbermenu
  357.   when action = '=1' then nop
  358.   when action = '=2' then signal aagetnumberagain
  359.   when action = '=3' then nop
  360.   when action = '=4' then nop
  361.   when action = '=5' then nop
  362.   when action = '=6' then nop
  363.   when action = '=7' then nop
  364.   when action = '=8' then nop
  365.   when action = '=9' then nop
  366.   when action = '=#' then signal aagetnumberdone
  367.   when action = '=*' then signal answerVoiceDone
  368.   when action = 4 then signal stdfax
  369.   when action = 5 then signal stddata
  370.   when action = 8 then signal stdbusy
  371.   when action = 10 then do; number = ''; signal aagetnumberdone; end
  372.   when action = 12 then signal stdabort
  373.   when action = 14 then signal stderror
  374.   when action = 16 then signal stderror
  375.   otherwise signal arexxerror
  376. end
  377.  
  378. aagetnumberdone:
  379. /* We're done.  Number is in 'number' */
  380.  
  381. return number
  382.  
  383.  
  384. /* TITLE: avm:rexx/playnumber.avm */
  385. playnumber:
  386. /* Cycle through value and play each symbol */
  387.  
  388. procedure
  389. parse arg number
  390. say 'playnumber' number
  391.  
  392. do i = 1 to length(number)
  393.   if pos(substr(number, i, 1), '0123456789') > 0 then
  394.     call playnumbranch('playnum' || substr(number, i, 1))
  395.   else if substr(number, i, 1) = '#' then
  396.     call playnumbranch('playnumpound')
  397.   else if substr(number, i, 1) = '*' then
  398.     call playnumbranch('playnumstar')
  399. end
  400. signal playnumdone
  401.  
  402. playnumbranch:
  403. procedure
  404. parse arg label
  405. signal value label
  406. return
  407.  
  408. playnum0:
  409. 'playvoice' 'avm:voices/number00'
  410. action = rc
  411. select
  412.   when action = 0 then nop
  413.   when action = 1 then nop
  414.   when action = 4 then signal stdfax
  415.   when action = 5 then signal stddata
  416.   when action = 8 then signal stdbusy
  417.   when action = 12 then signal stdabort
  418.   when action = 14 then signal stderror
  419.   when action = 16 then signal stderror
  420.   otherwise signal arexxerror
  421. end
  422. return
  423.  
  424. playnum1:
  425. 'playvoice' 'avm:voices/number01'
  426. action = rc
  427. select
  428.   when action = 0 then nop
  429.   when action = 1 then nop
  430.   when action = 4 then signal stdfax
  431.   when action = 5 then signal stddata
  432.   when action = 8 then signal stdbusy
  433.   when action = 12 then signal stdabort
  434.   when action = 14 then signal stderror
  435.   when action = 16 then signal stderror
  436.   otherwise signal arexxerror
  437. end
  438. return
  439.  
  440. playnum2:
  441. 'playvoice' 'avm:voices/number02'
  442. action = rc
  443. select
  444.   when action = 0 then nop
  445.   when action = 1 then nop
  446.   when action = 4 then signal stdfax
  447.   when action = 5 then signal stddata
  448.   when action = 8 then signal stdbusy
  449.   when action = 12 then signal stdabort
  450.   when action = 14 then signal stderror
  451.   when action = 16 then signal stderror
  452.   otherwise signal arexxerror
  453. end
  454. return
  455.  
  456. playnum3:
  457. 'playvoice' 'avm:voices/number03'
  458. action = rc
  459. select
  460.   when action = 0 then nop
  461.   when action = 1 then nop
  462.   when action = 4 then signal stdfax
  463.   when action = 5 then signal stddata
  464.   when action = 8 then signal stdbusy
  465.   when action = 12 then signal stdabort
  466.   when action = 14 then signal stderror
  467.   when action = 16 then signal stderror
  468.   otherwise signal arexxerror
  469. end
  470. return
  471.  
  472. playnum4:
  473. 'playvoice' 'avm:voices/number04'
  474. action = rc
  475. select
  476.   when action = 0 then nop
  477.   when action = 1 then nop
  478.   when action = 4 then signal stdfax
  479.   when action = 5 then signal stddata
  480.   when action = 8 then signal stdbusy
  481.   when action = 12 then signal stdabort
  482.   when action = 14 then signal stderror
  483.   when action = 16 then signal stderror
  484.   otherwise signal arexxerror
  485. end
  486. return
  487.  
  488. playnum5:
  489. 'playvoice' 'avm:voices/number05'
  490. action = rc
  491. select
  492.   when action = 0 then nop
  493.   when action = 1 then nop
  494.   when action = 4 then signal stdfax
  495.   when action = 5 then signal stddata
  496.   when action = 8 then signal stdbusy
  497.   when action = 12 then signal stdabort
  498.   when action = 14 then signal stderror
  499.   when action = 16 then signal stderror
  500.   otherwise signal arexxerror
  501. end
  502. return
  503.  
  504. playnum6:
  505. 'playvoice' 'avm:voices/number06'
  506. action = rc
  507. select
  508.   when action = 0 then nop
  509.   when action = 1 then nop
  510.   when action = 4 then signal stdfax
  511.   when action = 5 then signal stddata
  512.   when action = 8 then signal stdbusy
  513.   when action = 12 then signal stdabort
  514.   when action = 14 then signal stderror
  515.   when action = 16 then signal stderror
  516.   otherwise signal arexxerror
  517. end
  518. return
  519.  
  520. playnum7:
  521. 'playvoice' 'avm:voices/number07'
  522. action = rc
  523. select
  524.   when action = 0 then nop
  525.   when action = 1 then nop
  526.   when action = 4 then signal stdfax
  527.   when action = 5 then signal stddata
  528.   when action = 8 then signal stdbusy
  529.   when action = 12 then signal stdabort
  530.   when action = 14 then signal stderror
  531.   when action = 16 then signal stderror
  532.   otherwise signal arexxerror
  533. end
  534. return
  535.  
  536. playnum8:
  537. 'playvoice' 'avm:voices/number08'
  538. action = rc
  539. select
  540.   when action = 0 then nop
  541.   when action = 1 then nop
  542.   when action = 4 then signal stdfax
  543.   when action = 5 then signal stddata
  544.   when action = 8 then signal stdbusy
  545.   when action = 12 then signal stdabort
  546.   when action = 14 then signal stderror
  547.   when action = 16 then signal stderror
  548.   otherwise signal arexxerror
  549. end
  550. return
  551.  
  552. playnum9:
  553. 'playvoice' 'avm:voices/number09'
  554. action = rc
  555. select
  556.   when action = 0 then nop
  557.   when action = 1 then nop
  558.   when action = 4 then signal stdfax
  559.   when action = 5 then signal stddata
  560.   when action = 8 then signal stdbusy
  561.   when action = 12 then signal stdabort
  562.   when action = 14 then signal stderror
  563.   when action = 16 then signal stderror
  564.   otherwise signal arexxerror
  565. end
  566. return
  567.  
  568. playnumpound:
  569. 'playvoice' 'avm:voices/numberpound'
  570. action = rc
  571. select
  572.   when action = 0 then nop
  573.   when action = 1 then nop
  574.   when action = 4 then signal stdfax
  575.   when action = 5 then signal stddata
  576.   when action = 8 then signal stdbusy
  577.   when action = 12 then signal stdabort
  578.   when action = 14 then signal stderror
  579.   when action = 16 then signal stderror
  580.   otherwise signal arexxerror
  581. end
  582. return
  583.  
  584. playnumstar:
  585. 'playvoice' 'avm:voices/numberstar'
  586. action = rc
  587. select
  588.   when action = 0 then nop
  589.   when action = 1 then nop
  590.   when action = 4 then signal stdfax
  591.   when action = 5 then signal stddata
  592.   when action = 8 then signal stdbusy
  593.   when action = 12 then signal stdabort
  594.   when action = 14 then signal stderror
  595.   when action = 16 then signal stderror
  596.   otherwise signal arexxerror
  597. end
  598. return
  599.  
  600. playnumdone:
  601. /* We're done */
  602. return
  603.  
  604.  
  605. /* TITLE: avm:rexx/playddnumber.avm */
  606. playddnumber:
  607. /* We're going to play a double digit number */
  608.  
  609. procedure
  610. parse arg number
  611. directdd = getclip('AVMDirectDDNumber')
  612. if upper(directdd) = 'YES' then signal playdirectdd
  613.  
  614. if number > 9 & number < 20 then
  615.   call playnumbranch('playnum' || number)
  616. else if number >= 20 & number < 60 then do
  617.   units = number // 10
  618.   tens = number - units
  619.   call playnumbranch('playnum' || tens)
  620.   if units > 0 then call playnumbranch('playnum' || units)
  621. end; else
  622.   call playnumber(number)
  623. signal playddnumdone
  624.  
  625. playdirectdd:
  626. if number < 10 then call playnumber(number)
  627. else call playnumbranch('playnum' || number)
  628. signal playddnumdone
  629.  
  630. playnum10:
  631. 'playvoice' 'avm:voices/number10'
  632. action = rc
  633. select
  634.   when action = 0 then nop
  635.   when action = 1 then nop
  636.   when action = 4 then signal stdfax
  637.   when action = 5 then signal stddata
  638.   when action = 8 then signal stdbusy
  639.   when action = 12 then signal stdabort
  640.   when action = 14 then signal stderror
  641.   when action = 16 then signal stderror
  642.   otherwise signal arexxerror
  643. end
  644. return
  645.  
  646. playnum11:
  647. 'playvoice' 'avm:voices/number11'
  648. action = rc
  649. select
  650.   when action = 0 then nop
  651.   when action = 1 then nop
  652.   when action = 4 then signal stdfax
  653.   when action = 5 then signal stddata
  654.   when action = 8 then signal stdbusy
  655.   when action = 12 then signal stdabort
  656.   when action = 14 then signal stderror
  657.   when action = 16 then signal stderror
  658.   otherwise signal arexxerror
  659. end
  660. return
  661.  
  662. playnum12:
  663. 'playvoice' 'avm:voices/number12'
  664. action = rc
  665. select
  666.   when action = 0 then nop
  667.   when action = 1 then nop
  668.   when action = 4 then signal stdfax
  669.   when action = 5 then signal stddata
  670.   when action = 8 then signal stdbusy
  671.   when action = 12 then signal stdabort
  672.   when action = 14 then signal stderror
  673.   when action = 16 then signal stderror
  674.   otherwise signal arexxerror
  675. end
  676. return
  677.  
  678. playnum13:
  679. 'playvoice' 'avm:voices/number13'
  680. action = rc
  681. select
  682.   when action = 0 then nop
  683.   when action = 1 then nop
  684.   when action = 4 then signal stdfax
  685.   when action = 5 then signal stddata
  686.   when action = 8 then signal stdbusy
  687.   when action = 12 then signal stdabort
  688.   when action = 14 then signal stderror
  689.   when action = 16 then signal stderror
  690.   otherwise signal arexxerror
  691. end
  692. return
  693.  
  694. playnum14:
  695. 'playvoice' 'avm:voices/number14'
  696. action = rc
  697. select
  698.   when action = 0 then nop
  699.   when action = 1 then nop
  700.   when action = 4 then signal stdfax
  701.   when action = 5 then signal stddata
  702.   when action = 8 then signal stdbusy
  703.   when action = 12 then signal stdabort
  704.   when action = 14 then signal stderror
  705.   when action = 16 then signal stderror
  706.   otherwise signal arexxerror
  707. end
  708. return
  709.  
  710. playnum15:
  711. 'playvoice' 'avm:voices/number15'
  712. action = rc
  713. select
  714.   when action = 0 then nop
  715.   when action = 1 then nop
  716.   when action = 4 then signal stdfax
  717.   when action = 5 then signal stddata
  718.   when action = 8 then signal stdbusy
  719.   when action = 12 then signal stdabort
  720.   when action = 14 then signal stderror
  721.   when action = 16 then signal stderror
  722.   otherwise signal arexxerror
  723. end
  724. return
  725.  
  726. playnum16:
  727. 'playvoice' 'avm:voices/number16'
  728. action = rc
  729. select
  730.   when action = 0 then nop
  731.   when action = 1 then nop
  732.   when action = 4 then signal stdfax
  733.   when action = 5 then signal stddata
  734.   when action = 8 then signal stdbusy
  735.   when action = 12 then signal stdabort
  736.   when action = 14 then signal stderror
  737.   when action = 16 then signal stderror
  738.   otherwise signal arexxerror
  739. end
  740. return
  741.  
  742. playnum17:
  743. 'playvoice' 'avm:voices/number17'
  744. action = rc
  745. select
  746.   when action = 0 then nop
  747.   when action = 1 then nop
  748.   when action = 4 then signal stdfax
  749.   when action = 5 then signal stddata
  750.   when action = 8 then signal stdbusy
  751.   when action = 12 then signal stdabort
  752.   when action = 14 then signal stderror
  753.   when action = 16 then signal stderror
  754.   otherwise signal arexxerror
  755. end
  756. return
  757.  
  758. playnum18:
  759. 'playvoice' 'avm:voices/number18'
  760. action = rc
  761. select
  762.   when action = 0 then nop
  763.   when action = 1 then nop
  764.   when action = 4 then signal stdfax
  765.   when action = 5 then signal stddata
  766.   when action = 8 then signal stdbusy
  767.   when action = 12 then signal stdabort
  768.   when action = 14 then signal stderror
  769.   when action = 16 then signal stderror
  770.   otherwise signal arexxerror
  771. end
  772. return
  773.  
  774. playnum19:
  775. 'playvoice' 'avm:voices/number19'
  776. action = rc
  777. select
  778.   when action = 0 then nop
  779.   when action = 1 then nop
  780.   when action = 4 then signal stdfax
  781.   when action = 5 then signal stddata
  782.   when action = 8 then signal stdbusy
  783.   when action = 12 then signal stdabort
  784.   when action = 14 then signal stderror
  785.   when action = 16 then signal stderror
  786.   otherwise signal arexxerror
  787. end
  788. return
  789.  
  790. playnum20:
  791. 'playvoice' 'avm:voices/number20'
  792. action = rc
  793. select
  794.   when action = 0 then nop
  795.   when action = 1 then nop
  796.   when action = 4 then signal stdfax
  797.   when action = 5 then signal stddata
  798.   when action = 8 then signal stdbusy
  799.   when action = 12 then signal stdabort
  800.   when action = 14 then signal stderror
  801.   when action = 16 then signal stderror
  802.   otherwise signal arexxerror
  803. end
  804. return
  805.  
  806. playnum30:
  807. 'playvoice' 'avm:voices/number30'
  808. action = rc
  809. select
  810.   when action = 0 then nop
  811.   when action = 1 then nop
  812.   when action = 4 then signal stdfax
  813.   when action = 5 then signal stddata
  814.   when action = 8 then signal stdbusy
  815.   when action = 12 then signal stdabort
  816.   when action = 14 then signal stderror
  817.   when action = 16 then signal stderror
  818.   otherwise signal arexxerror
  819. end
  820. return
  821.  
  822. playnum40:
  823. 'playvoice' 'avm:voices/number40'
  824. action = rc
  825. select
  826.   when action = 0 then nop
  827.   when action = 1 then nop
  828.   when action = 4 then signal stdfax
  829.   when action = 5 then signal stddata
  830.   when action = 8 then signal stdbusy
  831.   when action = 12 then signal stdabort
  832.   when action = 14 then signal stderror
  833.   when action = 16 then signal stderror
  834.   otherwise signal arexxerror
  835. end
  836. return
  837.  
  838. playnum50:
  839. 'playvoice' 'avm:voices/number50'
  840. action = rc
  841. select
  842.   when action = 0 then nop
  843.   when action = 1 then nop
  844.   when action = 4 then signal stdfax
  845.   when action = 5 then signal stddata
  846.   when action = 8 then signal stdbusy
  847.   when action = 12 then signal stdabort
  848.   when action = 14 then signal stderror
  849.   when action = 16 then signal stderror
  850.   otherwise signal arexxerror
  851. end
  852. return
  853.  
  854. playddnumdone:
  855. /* We're done */
  856. return
  857.  
  858. playnum21:
  859. 'playvoice' 'avm:voices/number21'
  860. action = rc
  861. select
  862.   when action = 0 then nop
  863.   when action = 1 then nop
  864.   when action = 4 then signal stdfax
  865.   when action = 5 then signal stddata
  866.   when action = 8 then signal stdbusy
  867.   when action = 12 then signal stdabort
  868.   when action = 14 then signal stderror
  869.   when action = 16 then signal stderror
  870.   otherwise signal arexxerror
  871. end
  872. return
  873.  
  874. playnum22:
  875. 'playvoice' 'avm:voices/number22'
  876. action = rc
  877. select
  878.   when action = 0 then nop
  879.   when action = 1 then nop
  880.   when action = 4 then signal stdfax
  881.   when action = 5 then signal stddata
  882.   when action = 8 then signal stdbusy
  883.   when action = 12 then signal stdabort
  884.   when action = 14 then signal stderror
  885.   when action = 16 then signal stderror
  886.   otherwise signal arexxerror
  887. end
  888. return
  889.  
  890. playnum23:
  891. 'playvoice' 'avm:voices/number23'
  892. action = rc
  893. select
  894.   when action = 0 then nop
  895.   when action = 1 then nop
  896.   when action = 4 then signal stdfax
  897.   when action = 5 then signal stddata
  898.   when action = 8 then signal stdbusy
  899.   when action = 12 then signal stdabort
  900.   when action = 14 then signal stderror
  901.   when action = 16 then signal stderror
  902.   otherwise signal arexxerror
  903. end
  904. return
  905.  
  906. playnum24:
  907. 'playvoice' 'avm:voices/number24'
  908. action = rc
  909. select
  910.   when action = 0 then nop
  911.   when action = 1 then nop
  912.   when action = 4 then signal stdfax
  913.   when action = 5 then signal stddata
  914.   when action = 8 then signal stdbusy
  915.   when action = 12 then signal stdabort
  916.   when action = 14 then signal stderror
  917.   when action = 16 then signal stderror
  918.   otherwise signal arexxerror
  919. end
  920. return
  921.  
  922. playnum25:
  923. 'playvoice' 'avm:voices/number25'
  924. action = rc
  925. select
  926.   when action = 0 then nop
  927.   when action = 1 then nop
  928.   when action = 4 then signal stdfax
  929.   when action = 5 then signal stddata
  930.   when action = 8 then signal stdbusy
  931.   when action = 12 then signal stdabort
  932.   when action = 14 then signal stderror
  933.   when action = 16 then signal stderror
  934.   otherwise signal arexxerror
  935. end
  936. return
  937.  
  938. playnum26:
  939. 'playvoice' 'avm:voices/number26'
  940. action = rc
  941. select
  942.   when action = 0 then nop
  943.   when action = 1 then nop
  944.   when action = 4 then signal stdfax
  945.   when action = 5 then signal stddata
  946.   when action = 8 then signal stdbusy
  947.   when action = 12 then signal stdabort
  948.   when action = 14 then signal stderror
  949.   when action = 16 then signal stderror
  950.   otherwise signal arexxerror
  951. end
  952. return
  953.  
  954. playnum27:
  955. 'playvoice' 'avm:voices/number27'
  956. action = rc
  957. select
  958.   when action = 0 then nop
  959.   when action = 1 then nop
  960.   when action = 4 then signal stdfax
  961.   when action = 5 then signal stddata
  962.   when action = 8 then signal stdbusy
  963.   when action = 12 then signal stdabort
  964.   when action = 14 then signal stderror
  965.   when action = 16 then signal stderror
  966.   otherwise signal arexxerror
  967. end
  968. return
  969.  
  970. playnum28:
  971. 'playvoice' 'avm:voices/number28'
  972. action = rc
  973. select
  974.   when action = 0 then nop
  975.   when action = 1 then nop
  976.   when action = 4 then signal stdfax
  977.   when action = 5 then signal stddata
  978.   when action = 8 then signal stdbusy
  979.   when action = 12 then signal stdabort
  980.   when action = 14 then signal stderror
  981.   when action = 16 then signal stderror
  982.   otherwise signal arexxerror
  983. end
  984. return
  985.  
  986. playnum29:
  987. 'playvoice' 'avm:voices/number29'
  988. action = rc
  989. select
  990.   when action = 0 then nop
  991.   when action = 1 then nop
  992.   when action = 4 then signal stdfax
  993.   when action = 5 then signal stddata
  994.   when action = 8 then signal stdbusy
  995.   when action = 12 then signal stdabort
  996.   when action = 14 then signal stderror
  997.   when action = 16 then signal stderror
  998.   otherwise signal arexxerror
  999. end
  1000. return
  1001.  
  1002. playnum31:
  1003. 'playvoice' 'avm:voices/number31'
  1004. action = rc
  1005. select
  1006.   when action = 0 then nop
  1007.   when action = 1 then nop
  1008.   when action = 4 then signal stdfax
  1009.   when action = 5 then signal stddata
  1010.   when action = 8 then signal stdbusy
  1011.   when action = 12 then signal stdabort
  1012.   when action = 14 then signal stderror
  1013.   when action = 16 then signal stderror
  1014.   otherwise signal arexxerror
  1015. end
  1016. return
  1017.  
  1018. playnum32:
  1019. 'playvoice' 'avm:voices/number32'
  1020. action = rc
  1021. select
  1022.   when action = 0 then nop
  1023.   when action = 1 then nop
  1024.   when action = 4 then signal stdfax
  1025.   when action = 5 then signal stddata
  1026.   when action = 8 then signal stdbusy
  1027.   when action = 12 then signal stdabort
  1028.   when action = 14 then signal stderror
  1029.   when action = 16 then signal stderror
  1030.   otherwise signal arexxerror
  1031. end
  1032. return
  1033.  
  1034. playnum33:
  1035. 'playvoice' 'avm:voices/number33'
  1036. action = rc
  1037. select
  1038.   when action = 0 then nop
  1039.   when action = 1 then nop
  1040.   when action = 4 then signal stdfax
  1041.   when action = 5 then signal stddata
  1042.   when action = 8 then signal stdbusy
  1043.   when action = 12 then signal stdabort
  1044.   when action = 14 then signal stderror
  1045.   when action = 16 then signal stderror
  1046.   otherwise signal arexxerror
  1047. end
  1048. return
  1049.  
  1050. playnum34:
  1051. 'playvoice' 'avm:voices/number34'
  1052. action = rc
  1053. select
  1054.   when action = 0 then nop
  1055.   when action = 1 then nop
  1056.   when action = 4 then signal stdfax
  1057.   when action = 5 then signal stddata
  1058.   when action = 8 then signal stdbusy
  1059.   when action = 12 then signal stdabort
  1060.   when action = 14 then signal stderror
  1061.   when action = 16 then signal stderror
  1062.   otherwise signal arexxerror
  1063. end
  1064. return
  1065.  
  1066. playnum35:
  1067. 'playvoice' 'avm:voices/number35'
  1068. action = rc
  1069. select
  1070.   when action = 0 then nop
  1071.   when action = 1 then nop
  1072.   when action = 4 then signal stdfax
  1073.   when action = 5 then signal stddata
  1074.   when action = 8 then signal stdbusy
  1075.   when action = 12 then signal stdabort
  1076.   when action = 14 then signal stderror
  1077.   when action = 16 then signal stderror
  1078.   otherwise signal arexxerror
  1079. end
  1080. return
  1081.  
  1082. playnum36:
  1083. 'playvoice' 'avm:voices/number36'
  1084. action = rc
  1085. select
  1086.   when action = 0 then nop
  1087.   when action = 1 then nop
  1088.   when action = 4 then signal stdfax
  1089.   when action = 5 then signal stddata
  1090.   when action = 8 then signal stdbusy
  1091.   when action = 12 then signal stdabort
  1092.   when action = 14 then signal stderror
  1093.   when action = 16 then signal stderror
  1094.   otherwise signal arexxerror
  1095. end
  1096. return
  1097.  
  1098. playnum37:
  1099. 'playvoice' 'avm:voices/number37'
  1100. action = rc
  1101. select
  1102.   when action = 0 then nop
  1103.   when action = 1 then nop
  1104.   when action = 4 then signal stdfax
  1105.   when action = 5 then signal stddata
  1106.   when action = 8 then signal stdbusy
  1107.   when action = 12 then signal stdabort
  1108.   when action = 14 then signal stderror
  1109.   when action = 16 then signal stderror
  1110.   otherwise signal arexxerror
  1111. end
  1112. return
  1113.  
  1114. playnum38:
  1115. 'playvoice' 'avm:voices/number38'
  1116. action = rc
  1117. select
  1118.   when action = 0 then nop
  1119.   when action = 1 then nop
  1120.   when action = 4 then signal stdfax
  1121.   when action = 5 then signal stddata
  1122.   when action = 8 then signal stdbusy
  1123.   when action = 12 then signal stdabort
  1124.   when action = 14 then signal stderror
  1125.   when action = 16 then signal stderror
  1126.   otherwise signal arexxerror
  1127. end
  1128. return
  1129.  
  1130. playnum39:
  1131. 'playvoice' 'avm:voices/number39'
  1132. action = rc
  1133. select
  1134.   when action = 0 then nop
  1135.   when action = 1 then nop
  1136.   when action = 4 then signal stdfax
  1137.   when action = 5 then signal stddata
  1138.   when action = 8 then signal stdbusy
  1139.   when action = 12 then signal stdabort
  1140.   when action = 14 then signal stderror
  1141.   when action = 16 then signal stderror
  1142.   otherwise signal arexxerror
  1143. end
  1144. return
  1145.  
  1146. playnum41:
  1147. 'playvoice' 'avm:voices/number41'
  1148. action = rc
  1149. select
  1150.   when action = 0 then nop
  1151.   when action = 1 then nop
  1152.   when action = 4 then signal stdfax
  1153.   when action = 5 then signal stddata
  1154.   when action = 8 then signal stdbusy
  1155.   when action = 12 then signal stdabort
  1156.   when action = 14 then signal stderror
  1157.   when action = 16 then signal stderror
  1158.   otherwise signal arexxerror
  1159. end
  1160. return
  1161.  
  1162. playnum42:
  1163. 'playvoice' 'avm:voices/number42'
  1164. action = rc
  1165. select
  1166.   when action = 0 then nop
  1167.   when action = 1 then nop
  1168.   when action = 4 then signal stdfax
  1169.   when action = 5 then signal stddata
  1170.   when action = 8 then signal stdbusy
  1171.   when action = 12 then signal stdabort
  1172.   when action = 14 then signal stderror
  1173.   when action = 16 then signal stderror
  1174.   otherwise signal arexxerror
  1175. end
  1176. return
  1177.  
  1178. playnum43:
  1179. 'playvoice' 'avm:voices/number43'
  1180. action = rc
  1181. select
  1182.   when action = 0 then nop
  1183.   when action = 1 then nop
  1184.   when action = 4 then signal stdfax
  1185.   when action = 5 then signal stddata
  1186.   when action = 8 then signal stdbusy
  1187.   when action = 12 then signal stdabort
  1188.   when action = 14 then signal stderror
  1189.   when action = 16 then signal stderror
  1190.   otherwise signal arexxerror
  1191. end
  1192. return
  1193.  
  1194. playnum44:
  1195. 'playvoice' 'avm:voices/number44'
  1196. action = rc
  1197. select
  1198.   when action = 0 then nop
  1199.   when action = 1 then nop
  1200.   when action = 4 then signal stdfax
  1201.   when action = 5 then signal stddata
  1202.   when action = 8 then signal stdbusy
  1203.   when action = 12 then signal stdabort
  1204.   when action = 14 then signal stderror
  1205.   when action = 16 then signal stderror
  1206.   otherwise signal arexxerror
  1207. end
  1208. return
  1209.  
  1210. playnum45:
  1211. 'playvoice' 'avm:voices/number45'
  1212. action = rc
  1213. select
  1214.   when action = 0 then nop
  1215.   when action = 1 then nop
  1216.   when action = 4 then signal stdfax
  1217.   when action = 5 then signal stddata
  1218.   when action = 8 then signal stdbusy
  1219.   when action = 12 then signal stdabort
  1220.   when action = 14 then signal stderror
  1221.   when action = 16 then signal stderror
  1222.   otherwise signal arexxerror
  1223. end
  1224. return
  1225.  
  1226. playnum46:
  1227. 'playvoice' 'avm:voices/number46'
  1228. action = rc
  1229. select
  1230.   when action = 0 then nop
  1231.   when action = 1 then nop
  1232.   when action = 4 then signal stdfax
  1233.   when action = 5 then signal stddata
  1234.   when action = 8 then signal stdbusy
  1235.   when action = 12 then signal stdabort
  1236.   when action = 14 then signal stderror
  1237.   when action = 16 then signal stderror
  1238.   otherwise signal arexxerror
  1239. end
  1240. return
  1241.  
  1242. playnum47:
  1243. 'playvoice' 'avm:voices/number47'
  1244. action = rc
  1245. select
  1246.   when action = 0 then nop
  1247.   when action = 1 then nop
  1248.   when action = 4 then signal stdfax
  1249.   when action = 5 then signal stddata
  1250.   when action = 8 then signal stdbusy
  1251.   when action = 12 then signal stdabort
  1252.   when action = 14 then signal stderror
  1253.   when action = 16 then signal stderror
  1254.   otherwise signal arexxerror
  1255. end
  1256. return
  1257.  
  1258. playnum48:
  1259. 'playvoice' 'avm:voices/number48'
  1260. action = rc
  1261. select
  1262.   when action = 0 then nop
  1263.   when action = 1 then nop
  1264.   when action = 4 then signal stdfax
  1265.   when action = 5 then signal stddata
  1266.   when action = 8 then signal stdbusy
  1267.   when action = 12 then signal stdabort
  1268.   when action = 14 then signal stderror
  1269.   when action = 16 then signal stderror
  1270.   otherwise signal arexxerror
  1271. end
  1272. return
  1273.  
  1274. playnum49:
  1275. 'playvoice' 'avm:voices/number49'
  1276. action = rc
  1277. select
  1278.   when action = 0 then nop
  1279.   when action = 1 then nop
  1280.   when action = 4 then signal stdfax
  1281.   when action = 5 then signal stddata
  1282.   when action = 8 then signal stdbusy
  1283.   when action = 12 then signal stdabort
  1284.   when action = 14 then signal stderror
  1285.   when action = 16 then signal stderror
  1286.   otherwise signal arexxerror
  1287. end
  1288. return
  1289.  
  1290. playnum51:
  1291. 'playvoice' 'avm:voices/number51'
  1292. action = rc
  1293. select
  1294.   when action = 0 then nop
  1295.   when action = 1 then nop
  1296.   when action = 4 then signal stdfax
  1297.   when action = 5 then signal stddata
  1298.   when action = 8 then signal stdbusy
  1299.   when action = 12 then signal stdabort
  1300.   when action = 14 then signal stderror
  1301.   when action = 16 then signal stderror
  1302.   otherwise signal arexxerror
  1303. end
  1304. return
  1305.  
  1306. playnum52:
  1307. 'playvoice' 'avm:voices/number52'
  1308. action = rc
  1309. select
  1310.   when action = 0 then nop
  1311.   when action = 1 then nop
  1312.   when action = 4 then signal stdfax
  1313.   when action = 5 then signal stddata
  1314.   when action = 8 then signal stdbusy
  1315.   when action = 12 then signal stdabort
  1316.   when action = 14 then signal stderror
  1317.   when action = 16 then signal stderror
  1318.   otherwise signal arexxerror
  1319. end
  1320. return
  1321.  
  1322. playnum53:
  1323. 'playvoice' 'avm:voices/number53'
  1324. action = rc
  1325. select
  1326.   when action = 0 then nop
  1327.   when action = 1 then nop
  1328.   when action = 4 then signal stdfax
  1329.   when action = 5 then signal stddata
  1330.   when action = 8 then signal stdbusy
  1331.   when action = 12 then signal stdabort
  1332.   when action = 14 then signal stderror
  1333.   when action = 16 then signal stderror
  1334.   otherwise signal arexxerror
  1335. end
  1336. return
  1337.  
  1338. playnum54:
  1339. 'playvoice' 'avm:voices/number54'
  1340. action = rc
  1341. select
  1342.   when action = 0 then nop
  1343.   when action = 1 then nop
  1344.   when action = 4 then signal stdfax
  1345.   when action = 5 then signal stddata
  1346.   when action = 8 then signal stdbusy
  1347.   when action = 12 then signal stdabort
  1348.   when action = 14 then signal stderror
  1349.   when action = 16 then signal stderror
  1350.   otherwise signal arexxerror
  1351. end
  1352. return
  1353.  
  1354. playnum55:
  1355. 'playvoice' 'avm:voices/number55'
  1356. action = rc
  1357. select
  1358.   when action = 0 then nop
  1359.   when action = 1 then nop
  1360.   when action = 4 then signal stdfax
  1361.   when action = 5 then signal stddata
  1362.   when action = 8 then signal stdbusy
  1363.   when action = 12 then signal stdabort
  1364.   when action = 14 then signal stderror
  1365.   when action = 16 then signal stderror
  1366.   otherwise signal arexxerror
  1367. end
  1368. return
  1369.  
  1370. playnum56:
  1371. 'playvoice' 'avm:voices/number56'
  1372. action = rc
  1373. select
  1374.   when action = 0 then nop
  1375.   when action = 1 then nop
  1376.   when action = 4 then signal stdfax
  1377.   when action = 5 then signal stddata
  1378.   when action = 8 then signal stdbusy
  1379.   when action = 12 then signal stdabort
  1380.   when action = 14 then signal stderror
  1381.   when action = 16 then signal stderror
  1382.   otherwise signal arexxerror
  1383. end
  1384. return
  1385.  
  1386. playnum57:
  1387. 'playvoice' 'avm:voices/number57'
  1388. action = rc
  1389. select
  1390.   when action = 0 then nop
  1391.   when action = 1 then nop
  1392.   when action = 4 then signal stdfax
  1393.   when action = 5 then signal stddata
  1394.   when action = 8 then signal stdbusy
  1395.   when action = 12 then signal stdabort
  1396.   when action = 14 then signal stderror
  1397.   when action = 16 then signal stderror
  1398.   otherwise signal arexxerror
  1399. end
  1400. return
  1401.  
  1402. playnum58:
  1403. 'playvoice' 'avm:voices/number58'
  1404. action = rc
  1405. select
  1406.   when action = 0 then nop
  1407.   when action = 1 then nop
  1408.   when action = 4 then signal stdfax
  1409.   when action = 5 then signal stddata
  1410.   when action = 8 then signal stdbusy
  1411.   when action = 12 then signal stdabort
  1412.   when action = 14 then signal stderror
  1413.   when action = 16 then signal stderror
  1414.   otherwise signal arexxerror
  1415. end
  1416. return
  1417.  
  1418. playnum59:
  1419. 'playvoice' 'avm:voices/number59'
  1420. action = rc
  1421. select
  1422.   when action = 0 then nop
  1423.   when action = 1 then nop
  1424.   when action = 4 then signal stdfax
  1425.   when action = 5 then signal stddata
  1426.   when action = 8 then signal stdbusy
  1427.   when action = 12 then signal stdabort
  1428.   when action = 14 then signal stderror
  1429.   when action = 16 then signal stderror
  1430.   otherwise signal arexxerror
  1431. end
  1432. return
  1433.  
  1434.  
  1435. /* TITLE: avm:rexx/playtime.avm */
  1436. playtime:
  1437. procedure
  1438. parse arg secs
  1439. hours = secs % (60*60)
  1440. minutes = (secs - (hours * 60 * 60)) % 60
  1441. if hours < 12 then pm = 0
  1442. else do; pm = 1; hours = hours - 12; end
  1443. if hours = 0 then hours = 12
  1444. timeformat = getclip('AVMTimeFormat')
  1445. if timeformat = "" then timeformat = '%hours12 %minutes %pm'
  1446.  
  1447. do i = 1 to words(timeformat)
  1448.   if upper(word(timeformat, i)) = '%HOURS12' then
  1449.     call playddnumber(hours)
  1450.   else if upper(word(timeformat, i)) = '%HOURS24' then
  1451.     call playddnumber(hours + (pm * 12))
  1452.   else if upper(word(timeformat, i)) = '%MINUTES' then
  1453.     call playddnumber(minutes)
  1454.   else if upper(word(timeformat, i)) = '%PM' then
  1455.     do
  1456.  
  1457.       if pm then call playnumbranch('playtimepm')
  1458.       else call playnumbranch('playtimeam')
  1459.     end
  1460.   else
  1461.     call playddvoice(word(timeformat, i))
  1462. end
  1463.  
  1464. /* We're done */
  1465. return
  1466.  
  1467. playtimeam:
  1468. 'playvoice' 'avm:voices/timeam'
  1469. action = rc
  1470. select
  1471.   when action = 0 then nop
  1472.   when action = 1 then nop
  1473.   when action = 4 then signal stdfax
  1474.   when action = 5 then signal stddata
  1475.   when action = 8 then signal stdbusy
  1476.   when action = 12 then signal stdabort
  1477.   when action = 14 then signal stderror
  1478.   when action = 16 then signal stderror
  1479.   otherwise signal arexxerror
  1480. end
  1481. return
  1482.  
  1483. playtimepm:
  1484. 'playvoice' 'avm:voices/timepm'
  1485. action = rc
  1486. select
  1487.   when action = 0 then nop
  1488.   when action = 1 then nop
  1489.   when action = 4 then signal stdfax
  1490.   when action = 5 then signal stddata
  1491.   when action = 8 then signal stdbusy
  1492.   when action = 12 then signal stdabort
  1493.   when action = 14 then signal stderror
  1494.   when action = 16 then signal stderror
  1495.   otherwise signal arexxerror
  1496. end
  1497. return
  1498.  
  1499.  
  1500. /* TITLE: avm:rexx/playdate.avm */
  1501. playdate:
  1502. /* We're going to play the month and day */
  1503.  
  1504. procedure
  1505. parse arg actualDate
  1506.  
  1507. dateformat = getclip('AVMDateFormat')
  1508. if dateformat = "" then dateformat = "%month %day"
  1509. else if upper(dateformat) = "NONE" then dateformat = ""
  1510.  
  1511. do i = 1 to words(dateformat)
  1512.   if upper(word(dateformat, i)) = "%MONTH" then
  1513.     call playnumbranch('playdate' || substr(actualDate, 5, 2))
  1514.   else if upper(word(dateformat, i)) = "%DAY" then
  1515.     call playddnumber(substr(actualDate, 7, 2))
  1516.   else
  1517.     call playddvoice(word(dateformat, i))
  1518. end
  1519.  
  1520. /* We're done */
  1521. return
  1522.  
  1523. playddvoice:
  1524. procedure
  1525. parse arg filename
  1526.  
  1527. 'playvoice' filename
  1528. action = rc
  1529. select
  1530.   when action = 0 then nop
  1531.   when action = 1 then nop
  1532.   when action = 4 then signal stdfax
  1533.   when action = 5 then signal stddata
  1534.   when action = 8 then signal stdbusy
  1535.   when action = 12 then signal stdabort
  1536.   when action = 14 then signal stderror
  1537.   when action = 16 then signal stderror
  1538.   otherwise signal arexxerror
  1539. end
  1540. return
  1541.  
  1542. playdate01:
  1543. 'playvoice' 'avm:voices/monthjanuary'
  1544. action = rc
  1545. select
  1546.   when action = 0 then nop
  1547.   when action = 1 then nop
  1548.   when action = 4 then signal stdfax
  1549.   when action = 5 then signal stddata
  1550.   when action = 8 then signal stdbusy
  1551.   when action = 12 then signal stdabort
  1552.   when action = 14 then signal stderror
  1553.   when action = 16 then signal stderror
  1554.   otherwise signal arexxerror
  1555. end
  1556. return
  1557.  
  1558. playdate02:
  1559. 'playvoice' 'avm:voices/monthfebruary'
  1560. action = rc
  1561. select
  1562.   when action = 0 then nop
  1563.   when action = 1 then nop
  1564.   when action = 4 then signal stdfax
  1565.   when action = 5 then signal stddata
  1566.   when action = 8 then signal stdbusy
  1567.   when action = 12 then signal stdabort
  1568.   when action = 14 then signal stderror
  1569.   when action = 16 then signal stderror
  1570.   otherwise signal arexxerror
  1571. end
  1572. return
  1573.  
  1574. playdate03:
  1575. 'playvoice' 'avm:voices/monthmarch'
  1576. action = rc
  1577. select
  1578.   when action = 0 then nop
  1579.   when action = 1 then nop
  1580.   when action = 4 then signal stdfax
  1581.   when action = 5 then signal stddata
  1582.   when action = 8 then signal stdbusy
  1583.   when action = 12 then signal stdabort
  1584.   when action = 14 then signal stderror
  1585.   when action = 16 then signal stderror
  1586.   otherwise signal arexxerror
  1587. end
  1588. return
  1589.  
  1590. playdate04:
  1591. 'playvoice' 'avm:voices/monthapril'
  1592. action = rc
  1593. select
  1594.   when action = 0 then nop
  1595.   when action = 1 then nop
  1596.   when action = 4 then signal stdfax
  1597.   when action = 5 then signal stddata
  1598.   when action = 8 then signal stdbusy
  1599.   when action = 12 then signal stdabort
  1600.   when action = 14 then signal stderror
  1601.   when action = 16 then signal stderror
  1602.   otherwise signal arexxerror
  1603. end
  1604. return
  1605.  
  1606. playdate05:
  1607. 'playvoice' 'avm:voices/monthmay'
  1608. action = rc
  1609. select
  1610.   when action = 0 then nop
  1611.   when action = 1 then nop
  1612.   when action = 4 then signal stdfax
  1613.   when action = 5 then signal stddata
  1614.   when action = 8 then signal stdbusy
  1615.   when action = 12 then signal stdabort
  1616.   when action = 14 then signal stderror
  1617.   when action = 16 then signal stderror
  1618.   otherwise signal arexxerror
  1619. end
  1620. return
  1621.  
  1622. playdate06:
  1623. 'playvoice' 'avm:voices/monthjune'
  1624. action = rc
  1625. select
  1626.   when action = 0 then nop
  1627.   when action = 1 then nop
  1628.   when action = 4 then signal stdfax
  1629.   when action = 5 then signal stddata
  1630.   when action = 8 then signal stdbusy
  1631.   when action = 12 then signal stdabort
  1632.   when action = 14 then signal stderror
  1633.   when action = 16 then signal stderror
  1634.   otherwise signal arexxerror
  1635. end
  1636. return
  1637.  
  1638. playdate07:
  1639. 'playvoice' 'avm:voices/monthjuly'
  1640. action = rc
  1641. select
  1642.   when action = 0 then nop
  1643.   when action = 1 then nop
  1644.   when action = 4 then signal stdfax
  1645.   when action = 5 then signal stddata
  1646.   when action = 8 then signal stdbusy
  1647.   when action = 12 then signal stdabort
  1648.   when action = 14 then signal stderror
  1649.   when action = 16 then signal stderror
  1650.   otherwise signal arexxerror
  1651. end
  1652. return
  1653.  
  1654. playdate08:
  1655. 'playvoice' 'avm:voices/monthaugust'
  1656. action = rc
  1657. select
  1658.   when action = 0 then nop
  1659.   when action = 1 then nop
  1660.   when action = 4 then signal stdfax
  1661.   when action = 5 then signal stddata
  1662.   when action = 8 then signal stdbusy
  1663.   when action = 12 then signal stdabort
  1664.   when action = 14 then signal stderror
  1665.   when action = 16 then signal stderror
  1666.   otherwise signal arexxerror
  1667. end
  1668. return
  1669.  
  1670. playdate09:
  1671. 'playvoice' 'avm:voices/monthseptember'
  1672. action = rc
  1673. select
  1674.   when action = 0 then nop
  1675.   when action = 1 then nop
  1676.   when action = 4 then signal stdfax
  1677.   when action = 5 then signal stddata
  1678.   when action = 8 then signal stdbusy
  1679.   when action = 12 then signal stdabort
  1680.   when action = 14 then signal stderror
  1681.   when action = 16 then signal stderror
  1682.   otherwise signal arexxerror
  1683. end
  1684. return
  1685.  
  1686. playdate10:
  1687. 'playvoice' 'avm:voices/monthoctober'
  1688. action = rc
  1689. select
  1690.   when action = 0 then nop
  1691.   when action = 1 then nop
  1692.   when action = 4 then signal stdfax
  1693.   when action = 5 then signal stddata
  1694.   when action = 8 then signal stdbusy
  1695.   when action = 12 then signal stdabort
  1696.   when action = 14 then signal stderror
  1697.   when action = 16 then signal stderror
  1698.   otherwise signal arexxerror
  1699. end
  1700. return
  1701.  
  1702. playdate11:
  1703. 'playvoice' 'avm:voices/monthnovember'
  1704. action = rc
  1705. select
  1706.   when action = 0 then nop
  1707.   when action = 1 then nop
  1708.   when action = 4 then signal stdfax
  1709.   when action = 5 then signal stddata
  1710.   when action = 8 then signal stdbusy
  1711.   when action = 12 then signal stdabort
  1712.   when action = 14 then signal stderror
  1713.   when action = 16 then signal stderror
  1714.   otherwise signal arexxerror
  1715. end
  1716. return
  1717.  
  1718. playdate12:
  1719. 'playvoice' 'avm:voices/monthdecember'
  1720. action = rc
  1721. select
  1722.   when action = 0 then nop
  1723.   when action = 1 then nop
  1724.   when action = 4 then signal stdfax
  1725.   when action = 5 then signal stddata
  1726.   when action = 8 then signal stdbusy
  1727.   when action = 12 then signal stdabort
  1728.   when action = 14 then signal stderror
  1729.   when action = 16 then signal stderror
  1730.   otherwise signal arexxerror
  1731. end
  1732. return
  1733.  
  1734.  
  1735. /* TITLE: avm:rexx/recordmessage.avm */
  1736. recordmessage:
  1737. procedure
  1738. parse arg filename
  1739.  
  1740. recordmessagesagain:
  1741. call aapresentmenu('avm:voices/RecordMessage', '0123#*', '3')
  1742. action = result
  1743. select
  1744.   when action = '=0' then signal recordmessageagain
  1745.   when action = '=1' then signal recordmessagesplay
  1746.   when action = '=2' then signal recordmessagesrecord
  1747.   when action = '=3' then signal recordmessagesdelete
  1748.   when action = '=4' then nop
  1749.   when action = '=5' then nop
  1750.   when action = '=6' then nop
  1751.   when action = '=7' then nop
  1752.   when action = '=8' then nop
  1753.   when action = '=9' then nop
  1754.   when action = '=#' then do; nop; end
  1755.   when action = '=*' then signal answerVoiceDone
  1756.   when action = 4 then signal stdfax
  1757.   when action = 5 then signal stddata
  1758.   when action = 8 then signal stdbusy
  1759.   when action = 10 then signal answerVoiceDone
  1760.   when action = 12 then signal stdabort
  1761.   when action = 14 then signal stderror
  1762.   when action = 16 then signal stderror
  1763.   otherwise signal arexxerror
  1764. end
  1765. return
  1766.  
  1767. recordmessagesplay:
  1768. 'playbeep' '3000' '0' '4'
  1769. action = rc
  1770. select
  1771.   when action = 0 then nop
  1772.   when action = 1 then nop
  1773.   when action = 4 then signal stdfax
  1774.   when action = 5 then signal stddata
  1775.   when action = 8 then signal stdbusy
  1776.   when action = 12 then signal stdabort
  1777.   when action = 14 then signal stderror
  1778.   when action = 16 then signal stderror
  1779.   otherwise signal arexxerror
  1780. end
  1781.  
  1782. 'playvoice' filename
  1783. action = rc
  1784. select
  1785.   when action = 0 then nop
  1786.   when action = 1 then nop
  1787.   when action = 4 then signal stdfax
  1788.   when action = 5 then signal stddata
  1789.   when action = 8 then signal stdbusy
  1790.   when action = 12 then signal stdabort
  1791.   when action = 14 then nop
  1792.   when action = 16 then nop
  1793.   otherwise signal arexxerror
  1794. end
  1795.  
  1796. 'flushphonebuffer'
  1797.  
  1798. 'playbeep' '3000' '0' '4'
  1799. action = rc
  1800. select
  1801.   when action = 0 then nop
  1802.   when action = 1 then nop
  1803.   when action = 4 then signal stdfax
  1804.   when action = 5 then signal stddata
  1805.   when action = 8 then signal stdbusy
  1806.   when action = 12 then signal stdabort
  1807.   when action = 14 then signal stderror
  1808.   when action = 16 then signal stderror
  1809.   otherwise signal arexxerror
  1810. end
  1811. signal recordmessagesagain
  1812.  
  1813. recordmessagesrecord:
  1814. 'playvoice' 'avm:voices/RecordMessagesRecord'
  1815. action = rc
  1816. select
  1817.   when action = 0 then nop
  1818.   when action = 1 then nop
  1819.   when action = 4 then signal stdfax
  1820.   when action = 5 then signal stddata
  1821.   when action = 8 then signal stdbusy
  1822.   when action = 12 then signal stdabort
  1823.   when action = 14 then signal stderror
  1824.   when action = 16 then signal stderror
  1825.   otherwise signal arexxerror
  1826. end
  1827.  
  1828. 'playbeep' '3000' '0' '4'
  1829. action = rc
  1830. select
  1831.   when action = 0 then nop
  1832.   when action = 1 then nop
  1833.   when action = 4 then signal stdfax
  1834.   when action = 5 then signal stddata
  1835.   when action = 8 then signal stdbusy
  1836.   when action = 12 then signal stdabort
  1837.   when action = 14 then signal stderror
  1838.   when action = 16 then signal stderror
  1839.   otherwise signal arexxerror
  1840. end
  1841.  
  1842. 'recordvoice' '0' '-1' '30' filename
  1843. action = rc
  1844. select
  1845.   when action = 0 then nop
  1846.   when action = 1 then nop
  1847.   when action = 2 then nop
  1848.   when action = 3 then nop
  1849.   when action = 4 then signal stdfax
  1850.   when action = 5 then signal stddata
  1851.   when action = 8 then signal stdbusy
  1852.   when action = 10 then nop
  1853.   when action = 12 then signal stdabort
  1854.   when action = 14 then signal stderror
  1855.   when action = 16 then signal stderror
  1856.   otherwise signal arexxerror
  1857. end
  1858.  
  1859. 'flushphonebuffer'
  1860.  
  1861. 'playbeep' '3000' '0' '4'
  1862. action = rc
  1863. select
  1864.   when action = 0 then nop
  1865.   when action = 1 then nop
  1866.   when action = 4 then signal stdfax
  1867.   when action = 5 then signal stddata
  1868.   when action = 8 then signal stdbusy
  1869.   when action = 12 then signal stdabort
  1870.   when action = 14 then signal stderror
  1871.   when action = 16 then signal stderror
  1872.   otherwise signal arexxerror
  1873. end
  1874. signal recordmessagesagain
  1875.  
  1876. recordmessagesdelete:
  1877. address command 'delete >nil: <nil: quiet' filename
  1878. signal recordmessagesagain
  1879.  
  1880.  
  1881. aapresentmenu:
  1882. /* TITLE: avm:rexx/presentmenu.avm */
  1883. procedure expose pmRetries pmTimesAround
  1884. parse arg filename, valid, retries
  1885. timesaround = retries
  1886. pmTimesAround = timesaround
  1887. pmRetries = retries
  1888.  
  1889. rs.normal = 0
  1890. rs.keydetected = 1
  1891. rs.quietdetected = 2
  1892. rs.silencedetected = 3
  1893. rs.faxdetected = 4
  1894. rs.datadetected = 5
  1895. rs.busydetected = 8
  1896. rs.timedout = 10
  1897. rs.signaldetected = 12
  1898. rs.overflow = 14
  1899. rs.error = 16
  1900. /* CB 0000 */
  1901.  
  1902. aapresentmenuloop:
  1903. 'playvoice' filename
  1904. action = rc
  1905. select
  1906.   when action = 0 then nop
  1907.   when action = 1 then nop
  1908.   when action = 4 then do; return rs.faxdetected; end
  1909.   when action = 5 then do; return rs.datadetected; end
  1910.   when action = 8 then do; return rs.busydetected; end
  1911.   when action = 12 then do; return rs.signaldetected; end
  1912.   when action = 14 then do; return rs.error; end
  1913.   when action = 16 then do; return rs.error; end
  1914.   otherwise signal arexxerror
  1915. end
  1916.  
  1917. 'readnkeys' '1' '5'
  1918. action = rc
  1919. if action = 0 then value = result
  1920. select
  1921.   when action = 0 then signal aapresentmenuvalue
  1922.   when action = 4 then do; return rs.faxdetected; end
  1923.   when action = 5 then do; return rs.datadetected; end
  1924.   when action = 8 then do; return rs.busydetected; end
  1925.   when action = 10 then signal aapresentmenutimeout
  1926.   when action = 12 then do; return rs.signaldetected; end
  1927.   when action = 14 then do; return rs.error; end
  1928.   when action = 16 then do; return rs.error; end
  1929.   otherwise signal arexxerror
  1930. end
  1931. return rs.error
  1932.  
  1933. aapresentmenutimeout:
  1934. 'flushphonebuffer'
  1935.  
  1936. 'playvoice' 'avm:voices/TimedOut'
  1937. action = rc
  1938. select
  1939.   when action = 0 then nop
  1940.   when action = 1 then nop
  1941.   when action = 4 then do; return rs.faxdetected; end
  1942.   when action = 5 then do; return rs.datadetected; end
  1943.   when action = 8 then do; return rs.busydetected; end
  1944.   when action = 12 then do; return rs.signaldetected; end
  1945.   when action = 14 then do; return rs.error; end
  1946.   when action = 16 then do; return rs.error; end
  1947.   otherwise signal arexxerror
  1948. end
  1949.  
  1950. timesaround = timesaround - 1; pmTimesAround = timesaround
  1951. if timesaround <= 0 then return rs.timedout
  1952. signal aapresentmenuloop
  1953.  
  1954. aapresentmenuvalue:
  1955. if pos(value, valid) = 0 then signal aainvalid
  1956. return '=' || value
  1957.  
  1958. aainvalid:
  1959. 'flushphonebuffer'
  1960.  
  1961. 'playvoice' 'avm:voices/BadChoice'
  1962. action = rc
  1963. select
  1964.   when action = 0 then nop
  1965.   when action = 1 then nop
  1966.   when action = 4 then do; return rs.faxdetected; end
  1967.   when action = 5 then do; return rs.datadetected; end
  1968.   when action = 8 then do; return rs.busydetected; end
  1969.   when action = 12 then do; return rs.signaldetected; end
  1970.   when action = 14 then do; return rs.error; end
  1971.   when action = 16 then do; return rs.error; end
  1972.   otherwise signal arexxerror
  1973. end
  1974.  
  1975. timesaround = timesaround - 1; pmTimesAround = timesaround
  1976. if timesaround <= 0 then return rs.timedout
  1977. signal aapresentmenuloop
  1978.  
  1979.  
  1980. aaprocessmailbox:
  1981. /* TITLE: avm:rexx/processmailbox.avm */
  1982. /* Function which has one argument, the mailbox */
  1983.  
  1984. procedure expose acidname acidnumber mailbox faxscript datascript
  1985. parse arg mailbox .
  1986. call loadMailBox(mailbox)
  1987. calledSysop = 0
  1988. pagedSysop = 0
  1989.  
  1990. if mailbox.autoalertb = 1 & mailbox.autoalertscript ~= '' then
  1991.   address rexx 'alertsysop' mailbox
  1992.  
  1993. 'playvoice' voiceFile(mailbox,'Personal')
  1994. action = rc
  1995. select
  1996.   when action = 0 then nop
  1997.   when action = 1 then signal aakeypressed
  1998.   when action = 4 then signal stdfax
  1999.   when action = 5 then signal stddata
  2000.   when action = 8 then signal stdbusy
  2001.   when action = 12 then signal stdabort
  2002.   when action = 14 then nop
  2003.   when action = 16 then nop
  2004.   otherwise signal arexxerror
  2005. end
  2006.  
  2007. aaAnnounce:
  2008. if mailbox.autoforwardannounce = 1 & mailbox.autoforward ~= '' then call announceForwardNumber
  2009.  
  2010. aanopersonal:
  2011. 'playvoice' 'avm:voices/MailboxGreeting'
  2012. action = rc
  2013. select
  2014.   when action = 0 then nop
  2015.   when action = 1 then signal aakeypressed
  2016.   when action = 4 then signal stdfax
  2017.   when action = 5 then signal stddata
  2018.   when action = 8 then signal stdbusy
  2019.   when action = 12 then signal stdabort
  2020.   when action = 14 then signal stderror
  2021.   when action = 16 then signal stderror
  2022.   otherwise signal arexxerror
  2023. end
  2024.  
  2025. /* Init log file stuff */
  2026.  
  2027. aaskipinstructions:
  2028. handle = makeUniqueFile()
  2029. call initLogEntry()
  2030. call time('r')
  2031.  
  2032. userBeep = getclip('AVMUserBeep')
  2033. if userBeep = 'YES' then do
  2034.  
  2035. 'playvoice' 'avm:voices/UserBeep'
  2036. action = rc
  2037. select
  2038.   when action = 0 then nop
  2039.   when action = 1 then signal aakeypressed
  2040.   when action = 4 then signal stdfax
  2041.   when action = 5 then signal stddata
  2042.   when action = 8 then signal stdbusy
  2043.   when action = 12 then signal stdabort
  2044.   when action = 14 then signal stderror
  2045.   when action = 16 then signal stderror
  2046.   otherwise signal arexxerror
  2047. end
  2048.  
  2049. end; else do
  2050.  
  2051. 'playbeep' '3000' '0' '4'
  2052. action = rc
  2053. select
  2054.   when action = 0 then nop
  2055.   when action = 1 then nop
  2056.   when action = 4 then signal stdfax
  2057.   when action = 5 then signal stddata
  2058.   when action = 8 then signal stdbusy
  2059.   when action = 12 then signal stdabort
  2060.   when action = 14 then signal stderror
  2061.   when action = 16 then signal stderror
  2062.   otherwise signal arexxerror
  2063. end
  2064.  
  2065. end
  2066.  
  2067. 'recordvoice' '0' '-1' '-1' voiceFile(mailbox,handle)
  2068. action = rc
  2069. select
  2070.   when action = 0 then nop
  2071.   when action = 1 then do; call aafixlog; signal aakeypressedafterrecord; end
  2072.   when action = 2 then do; call aafixlog; signal stdabort; end
  2073.   when action = 3 then do; call aafixlog; if upper(getclip('AVMDataAfterSilence')) = 'YES' then signal stddata; else signal stdabort; end
  2074.   when action = 4 then do; call aafixlog; signal stdfax; end
  2075.   when action = 5 then do; call aafixlog; signal stddata; end
  2076.   when action = 8 then do; call aafixlog; signal stdbusy; end
  2077.   when action = 10 then do; call aafixlog; signal aakeypressedafterrecord; end
  2078.   when action = 12 then do; call aafixlog; signal stdabort; end
  2079.   when action = 14 then do; call aafixlog; signal stderror; end
  2080.   when action = 16 then do; call aafixlog; signal stderror; end
  2081.   otherwise signal arexxerror
  2082. end
  2083.  
  2084. /* Shouldn't get here */
  2085. signal stderror
  2086.  
  2087. aafixlog:
  2088. /* This writes out the log file */
  2089.  
  2090. if mailbox.autoforwardb = 1 & mailbox.autoforwardondemand = "" & calledSysop = 0 then do
  2091.   call aaCallSysop
  2092. end
  2093. if mailbox.autopageb = 1 & mailbox.autopageondemand = "" & pagedSysop = 0 then do
  2094.   call aaPageSysop
  2095. end
  2096.  
  2097. log.filename = handle
  2098. log.length = trunc(time('e'))
  2099. log.type = 'voice'
  2100. call saveLogEntry(mailbox, handle)
  2101. preConv = upper(getclip('AVMPreConvert'))
  2102. if preConv = 'YES' then
  2103.   address command 'run >nil: <nil: avm:adpcm2iff' ,
  2104.   voiceFile(mailbox, handle) voiceFile(mailbox, handle) || 'i' '-nogui -1second'
  2105. return
  2106.  
  2107. aakeypressedafterrecord:
  2108. 'flushphonebuffer'
  2109.  
  2110. processmailboxmenu:
  2111. call aapresentmenu('avm:voices/MailboxCaller', '012345679#*', '3')
  2112. action = result
  2113. select
  2114.   when action = '=0' then signal processmailboxmenu
  2115.   when action = '=1' then signal aaAnnounce
  2116.   when action = '=2' then signal stdfaxinstruct
  2117.   when action = '=3' then do; call aaleavenumber(); end
  2118.   when action = '=4' then do; good = getpassword(mailbox.autoalertondemand); if good then address rexx 'alertsysop' mailbox; end
  2119.   when action = '=5' then signal stddatainstruct
  2120.   when action = '=6' then do; good = getpassword(mailbox.autoforwardondemand); if good & calledSysop = 0 then call aaCallSysop(); end
  2121.   when action = '=7' then do; good = getpassword(mailbox.autopageondemand); if good & pagedSysop = 0 then call aaPageSysop(); end
  2122.   when action = '=8' then nop
  2123.   when action = '=9' then do; call aamaintenancemode(mailbox); end
  2124.   when action = '=#' then do; return; end
  2125.   when action = '=*' then signal answervoiceDone
  2126.   when action = 4 then signal stdfax
  2127.   when action = 5 then signal stddata
  2128.   when action = 8 then signal stdbusy
  2129.   when action = 10 then signal answervoiceDone
  2130.   when action = 12 then signal stdabort
  2131.   when action = 14 then signal stderror
  2132.   when action = 16 then signal stderror
  2133.   otherwise signal arexxerror
  2134. end
  2135. signal processmailboxmenu
  2136.  
  2137. /* Shouldn't get here */
  2138. signal stderror
  2139.  
  2140. aaleavenumber:
  2141. number = getNumber()
  2142.  
  2143. log.returnnumber = number
  2144. call updateLogEntry(mailbox, handle)
  2145. return
  2146.  
  2147. aakeypressed:
  2148. call aapresentmenu('avm:voices/SkipFaxMaintenance', '012359#*', '3')
  2149. action = result
  2150. select
  2151.   when action = '=0' then signal aakeypressed
  2152.   when action = '=1' then signal aaskipinstructions
  2153.   when action = '=2' then signal stdfaxinstruct
  2154.   when action = '=3' then signal aaAnnounce
  2155.   when action = '=4' then nop
  2156.   when action = '=5' then signal stddatainstruct
  2157.   when action = '=6' then nop
  2158.   when action = '=7' then nop
  2159.   when action = '=8' then nop
  2160.   when action = '=9' then do; call aamaintenancemode(mailbox); end
  2161.   when action = '=#' then do; return; end
  2162.   when action = '=*' then signal stdabort
  2163.   when action = 4 then signal stdfax
  2164.   when action = 5 then signal stddata
  2165.   when action = 8 then signal stdbusy
  2166.   when action = 10 then signal answervoiceDone
  2167.   when action = 12 then signal stdabort
  2168.   when action = 14 then signal stderror
  2169.   when action = 16 then signal stderror
  2170.   otherwise signal arexxerror
  2171. end
  2172. return
  2173.  
  2174. /* TITLE: avm:rexx/maintenancemode.avm */
  2175. aamaintenancemode:
  2176. procedure
  2177. parse arg mailbox .
  2178.  
  2179. call loadMailbox(mailbox)
  2180. good = getPassword(mailbox.password)
  2181. if good = 0 then signal answerVoiceDone
  2182.  
  2183. logsthis = words(showdir(logFile(mailbox, '')))
  2184. logsanonymous = words(showdir(logFile('anonymous', '')))
  2185. if upper(mailbox) = 'ANONYMOUS' then logsanonymous = 0
  2186.  
  2187. if logsthis > 0 then call sayCountEntries(logsthis, 0)
  2188. if logsanonymous > 0 then call sayCountEntries(logsanonymous, 1)
  2189.  
  2190. maintenanceModeAgain:
  2191. call aapresentmenu('avm:voices/maintenancemode', '01234567#*', '3')
  2192. action = result
  2193. select
  2194.   when action = '=0' then signal maintenanceModeAgain
  2195.   when action = '=1' then do; call retrievemessages(mailbox); end
  2196.   when action = '=2' then do; call recordMessage(voiceFile(mailbox, 'Personal')); end
  2197.   when action = '=3' then do; call changeintrooptions(); end
  2198.   when action = '=4' then do; call changepassword(); end
  2199.   when action = '=5' then do; call sendMessageTo('Outgoing', mailbox, '', makeUniqueFile(), 'Voice', voiceFile(mailbox, 'Introduction'), '', ''); end
  2200.   when action = '=6' then do; call changeautooptions(mailbox); end
  2201.   when action = '=7' then do; call aaretrievemessages('Outgoing', 1, mailbox); end
  2202.   when action = '=8' then nop
  2203.   when action = '=9' then nop
  2204.   when action = '=#' then do; return; end
  2205.   when action = '=*' then signal answervoiceDone
  2206.   when action = 4 then signal stdfax
  2207.   when action = 5 then signal stddata
  2208.   when action = 8 then signal stdbusy
  2209.   when action = 10 then signal answerVoiceDone
  2210.   when action = 12 then signal stdabort
  2211.   when action = 14 then signal stderror
  2212.   when action = 16 then signal stderror
  2213.   otherwise signal arexxerror
  2214. end
  2215. signal maintenanceModeAgain
  2216.  
  2217. /* TITLE: avm:rexx/getpassword.avm */
  2218. /* This is a procedure which accepts 1 argument, a password */
  2219.  
  2220. getpassword:
  2221. procedure
  2222. parse arg password
  2223. count = 3 /* max of 3 times */
  2224. if password = '' then return 1
  2225.  
  2226. getpasswordagain:
  2227. count = count - 1
  2228. if count = 0 then return 0 /* didn't get a good password */
  2229.  
  2230. 'playvoice' 'avm:voices/getpassword'
  2231. action = rc
  2232. select
  2233.   when action = 0 then nop
  2234.   when action = 1 then nop
  2235.   when action = 4 then signal stdfax
  2236.   when action = 5 then signal stddata
  2237.   when action = 8 then signal stdbusy
  2238.   when action = 12 then signal stdabort
  2239.   when action = 14 then signal stderror
  2240.   when action = 16 then signal stderror
  2241.   otherwise signal arexxerror
  2242. end
  2243.  
  2244. 'readkeysuntil' '#' '10' '7'
  2245. action = rc
  2246. if action = 0 then value = result
  2247. select
  2248.   when action = 0 then signal getpasskeydetected
  2249.   when action = 4 then signal stdfax
  2250.   when action = 5 then signal stddata
  2251.   when action = 8 then signal stdbusy
  2252.   when action = 10 then nop
  2253.   when action = 12 then signal stdabort
  2254.   when action = 14 then signal stderror
  2255.   when action = 16 then signal stderror
  2256.   otherwise signal arexxerror
  2257. end
  2258.  
  2259. 'playvoice' 'avm:voices/passwordtimeout'
  2260. action = rc
  2261. select
  2262.   when action = 0 then nop
  2263.   when action = 1 then nop
  2264.   when action = 4 then signal stdfax
  2265.   when action = 5 then signal stddata
  2266.   when action = 8 then signal stdbusy
  2267.   when action = 12 then signal stdabort
  2268.   when action = 14 then signal stderror
  2269.   when action = 16 then signal stderror
  2270.   otherwise signal arexxerror
  2271. end
  2272. signal getpasswordagain
  2273.  
  2274. getpasskeydetected:
  2275. if value = password then return 1
  2276.  
  2277. 'playvoice' 'avm:voices/passwordbad'
  2278. action = rc
  2279. select
  2280.   when action = 0 then nop
  2281.   when action = 1 then nop
  2282.   when action = 4 then signal stdfax
  2283.   when action = 5 then signal stddata
  2284.   when action = 8 then signal stdbusy
  2285.   when action = 12 then signal stdabort
  2286.   when action = 14 then signal stderror
  2287.   when action = 16 then signal stderror
  2288.   otherwise signal arexxerror
  2289. end
  2290. signal getpasswordagain
  2291.  
  2292.  
  2293. retrievemessages:
  2294. procedure
  2295. parse arg mailbox .
  2296. call aaretrievemessages(mailbox, 0, mailbox)
  2297.  
  2298. if upper(mailbox) = 'ANONYMOUS' then return
  2299.  
  2300. 'playvoice' 'avm:voices/retrieveanonymous'
  2301. action = rc
  2302. select
  2303.   when action = 0 then nop
  2304.   when action = 1 then nop
  2305.   when action = 4 then signal stdfax
  2306.   when action = 5 then signal stddata
  2307.   when action = 8 then signal stdbusy
  2308.   when action = 12 then signal stdabort
  2309.   when action = 14 then signal stderror
  2310.   when action = 16 then signal stderror
  2311.   otherwise signal arexxerror
  2312. end
  2313.  
  2314. call aaretrievemessages('Anonymous', 0, mailbox)
  2315.  
  2316. 'playvoice' 'avm:voices/backhome'
  2317. action = rc
  2318. select
  2319.   when action = 0 then nop
  2320.   when action = 1 then nop
  2321.   when action = 4 then signal stdfax
  2322.   when action = 5 then signal stddata
  2323.   when action = 8 then signal stdbusy
  2324.   when action = 12 then signal stdabort
  2325.   when action = 14 then signal stderror
  2326.   when action = 16 then signal stderror
  2327.   otherwise signal arexxerror
  2328. end
  2329. return
  2330.  
  2331. changepassword:
  2332. number = getNumber()
  2333. if number ~= '' then do
  2334.   mailbox.password = number
  2335.   call saveMailbox(mailbox)
  2336. end
  2337. return
  2338.  
  2339. sayCountEntries:
  2340. parse arg count, inAnon
  2341. if count = 1 & inAnon then signal say1Anon
  2342. else if count = 1 & inAnon = 0 then signal say1This
  2343.  
  2344. sayCountMultiple:
  2345. 'playvoice' 'avm:voices/ThereAre'
  2346. action = rc
  2347. select
  2348.   when action = 0 then nop
  2349.   when action = 1 then nop
  2350.   when action = 4 then signal stdfax
  2351.   when action = 5 then signal stddata
  2352.   when action = 8 then signal stdbusy
  2353.   when action = 12 then signal stdabort
  2354.   when action = 14 then signal stderror
  2355.   when action = 16 then signal stderror
  2356.   otherwise signal arexxerror
  2357. end
  2358.  
  2359. call playddnumber(count)
  2360. if inAnon then signal sayCountAnon
  2361. else signal sayCountThis
  2362.  
  2363. sayCountAnon:
  2364. 'playvoice' 'avm:voices/InAnonMailbox'
  2365. action = rc
  2366. select
  2367.   when action = 0 then nop
  2368.   when action = 1 then nop
  2369.   when action = 4 then signal stdfax
  2370.   when action = 5 then signal stddata
  2371.   when action = 8 then signal stdbusy
  2372.   when action = 12 then signal stdabort
  2373.   when action = 14 then signal stderror
  2374.   when action = 16 then signal stderror
  2375.   otherwise signal arexxerror
  2376. end
  2377. return
  2378.  
  2379. sayCountThis:
  2380. 'playvoice' 'avm:voices/InThisMailbox'
  2381. action = rc
  2382. select
  2383.   when action = 0 then nop
  2384.   when action = 1 then nop
  2385.   when action = 4 then signal stdfax
  2386.   when action = 5 then signal stddata
  2387.   when action = 8 then signal stdbusy
  2388.   when action = 12 then signal stdabort
  2389.   when action = 14 then signal stderror
  2390.   when action = 16 then signal stderror
  2391.   otherwise signal arexxerror
  2392. end
  2393. return
  2394.  
  2395. say1Anon:
  2396. 'playvoice' 'avm:voices/OneInAnonMailbox'
  2397. action = rc
  2398. select
  2399.   when action = 0 then nop
  2400.   when action = 1 then nop
  2401.   when action = 4 then signal stdfax
  2402.   when action = 5 then signal stddata
  2403.   when action = 8 then signal stdbusy
  2404.   when action = 12 then signal stdabort
  2405.   when action = 14 then signal stderror
  2406.   when action = 16 then signal stderror
  2407.   otherwise signal arexxerror
  2408. end
  2409. return
  2410.  
  2411. say1This:
  2412. 'playvoice' 'avm:voices/OneInThisMailbox'
  2413. action = rc
  2414. select
  2415.   when action = 0 then nop
  2416.   when action = 1 then nop
  2417.   when action = 4 then signal stdfax
  2418.   when action = 5 then signal stddata
  2419.   when action = 8 then signal stdbusy
  2420.   when action = 12 then signal stdabort
  2421.   when action = 14 then signal stderror
  2422.   when action = 16 then signal stderror
  2423.   otherwise signal arexxerror
  2424. end
  2425. return
  2426.  
  2427. changeintrooptions:
  2428. call aapresentmenu('avm:voices/changeintrooptions', '012345#*', '3')
  2429. action = result
  2430. select
  2431.   when action = '=0' then signal changeintrooptions
  2432.   when action = '=1' then do; call setclip('AVMIntroductionType', 'DAYOFWEEK'); end
  2433.   when action = '=2' then do; call setclip('AVMIntroductionType', 'TIMEOFDAY'); end
  2434.   when action = '=3' then do; call setclip('AVMIntroductionType', 'RANDOM'); end
  2435.   when action = '=4' then do; call changetomanual(); end
  2436.   when action = '=5' then do; call recordintro(); end
  2437.   when action = '=6' then nop
  2438.   when action = '=7' then nop
  2439.   when action = '=8' then nop
  2440.   when action = '=9' then nop
  2441.   when action = '=#' then do; return; end
  2442.   when action = '=*' then signal answervoiceDone
  2443.   when action = 4 then signal stdfax
  2444.   when action = 5 then signal stddata
  2445.   when action = 8 then signal stdbusy
  2446.   when action = 10 then signal answerVoiceDone
  2447.   when action = 12 then signal stdabort
  2448.   when action = 14 then signal stderror
  2449.   when action = 16 then signal stderror
  2450.   otherwise signal arexxerror
  2451. end
  2452. signal changeintrooptions
  2453.  
  2454. changetomanual:
  2455. call aapresentmenu('avm:voices/selectmanualintro', '01234567#*', '3')
  2456. action = result
  2457. select
  2458.   when action = '=0' then signal changetomanual
  2459.   when action = '=1' then do; call setclip('AVMIntroductionType', '1'); end
  2460.   when action = '=2' then do; call setclip('AVMIntroductionType', '2'); end
  2461.   when action = '=3' then do; call setclip('AVMIntroductionType', '3'); end
  2462.   when action = '=4' then do; call setclip('AVMIntroductionType', '4'); end
  2463.   when action = '=5' then do; call setclip('AVMIntroductionType', '5'); end
  2464.   when action = '=6' then do; call setclip('AVMIntroductionType', '6'); end
  2465.   when action = '=7' then do; call setclip('AVMIntroductionType', '7'); end
  2466.   when action = '=8' then nop
  2467.   when action = '=9' then nop
  2468.   when action = '=#' then do; return; end
  2469.   when action = '=*' then signal answervoiceDone
  2470.   when action = 4 then signal stdfax
  2471.   when action = 5 then signal stddata
  2472.   when action = 8 then signal stdbusy
  2473.   when action = 10 then signal answerVoiceDone
  2474.   when action = 12 then signal stdabort
  2475.   when action = 14 then signal stderror
  2476.   when action = 16 then signal stderror
  2477.   otherwise signal arexxerror
  2478. end
  2479. signal changetomanual
  2480.  
  2481. recordintro:
  2482. call aapresentmenu('avm:voices/recordintro', '01234567#*', '3')
  2483. action = result
  2484. select
  2485.   when action = '=0' then signal recordintro
  2486.   when action = '=1' then do; call recordmessage('avm:voices/intro1'); end
  2487.   when action = '=2' then do; call recordmessage('avm:voices/intro2'); end
  2488.   when action = '=3' then do; call recordmessage('avm:voices/intro3'); end
  2489.   when action = '=4' then do; call recordmessage('avm:voices/intro4'); end
  2490.   when action = '=5' then do; call recordmessage('avm:voices/intro5'); end
  2491.   when action = '=6' then do; call recordmessage('avm:voices/intro6'); end
  2492.   when action = '=7' then do; call recordmessage('avm:voices/intro7'); end
  2493.   when action = '=8' then nop
  2494.   when action = '=9' then nop
  2495.   when action = '=#' then do; return; end
  2496.   when action = '=*' then signal answervoiceDone
  2497.   when action = 4 then signal stdfax
  2498.   when action = 5 then signal stddata
  2499.   when action = 8 then signal stdbusy
  2500.   when action = 10 then signal answerVoiceDone
  2501.   when action = 12 then signal stdabort
  2502.   when action = 14 then signal stderror
  2503.   when action = 16 then signal stderror
  2504.   otherwise signal arexxerror
  2505. end
  2506. signal recordintro
  2507.  
  2508. changeautooptions:
  2509. procedure
  2510. parse arg mailbox .
  2511. call loadMailbox(mailbox)
  2512.  
  2513. changeautomenu:
  2514. call aapresentmenu('avm:voices/ChangeAutoOptions', '0123#*', '3')
  2515. action = result
  2516. select
  2517.   when action = '=0' then signal changeautomenu
  2518.   when action = '=1' then do; call editautooptions('AUTOFORWARDB', 'AUTOFORWARDONDEMAND', 'AUTOFORWARD', 'AUTOFORWARDANNOUNCE'); end
  2519.   when action = '=2' then do; call editautooptions('AUTOFAXFORWARDB', '', 'AUTOFAXFORWARD', ''); end
  2520.   when action = '=3' then do; call editautooptions('AUTOPAGEB', 'AUTOPAGEONDEMAND', 'AUTOPAGE', ''); end
  2521.   when action = '=4' then nop
  2522.   when action = '=5' then nop
  2523.   when action = '=6' then nop
  2524.   when action = '=7' then nop
  2525.   when action = '=8' then nop
  2526.   when action = '=9' then nop
  2527.   when action = '=#' then do; return; end
  2528.   when action = '=*' then signal answerVoiceDone
  2529.   when action = 4 then signal stdfax
  2530.   when action = 5 then signal stddata
  2531.   when action = 8 then signal stdbusy
  2532.   when action = 10 then signal answerVoiceDone
  2533.   when action = 12 then signal stdabort
  2534.   when action = 14 then signal stderror
  2535.   when action = 16 then signal stderror
  2536.   otherwise signal arexxerror
  2537. end
  2538. signal changeautomenu
  2539.  
  2540. editautooptions:
  2541. procedure expose mailbox. mailbox
  2542. parse arg isOn, onDemand, telNumber, announce
  2543. call showAutoOptions
  2544.  
  2545. editautomenu:
  2546. call aapresentmenu('avm:voices/AutoOptions', '01234567#*', '3')
  2547. action = result
  2548. select
  2549.   when action = '=0' then signal editautomenu
  2550.   when action = '=1' then do; mailbox.isOn = 1; call saveMailbox(mailbox); end
  2551.   when action = '=2' then do; mailbox.isOn = 0; call saveMailbox(mailbox); end
  2552.   when action = '=3' then do; mailbox.telNumber = getNumber(); call saveMailbox(mailbox); end
  2553.   when action = '=4' then do; if onDemand ~= '' then do; mailbox.onDemand = getNumber(); call saveMailbox(mailbox); end; end
  2554.   when action = '=5' then do; if announce ~= '' then do; mailbox.announce = 1; call saveMailbox(mailbox); end; end
  2555.   when action = '=6' then do; if announce ~= '' then do; mailbox.announce = 0; call saveMailbox(mailbox); end; end
  2556.   when action = '=7' then do; call showAutoOptions(); end
  2557.   when action = '=8' then nop
  2558.   when action = '=9' then nop
  2559.   when action = '=#' then do; return; end
  2560.   when action = '=*' then signal answerVoiceDone
  2561.   when action = 4 then signal stdfax
  2562.   when action = 5 then signal stddata
  2563.   when action = 8 then signal stdbusy
  2564.   when action = 10 then signal answerVoiceDone
  2565.   when action = 12 then signal stdabort
  2566.   when action = 14 then signal stderror
  2567.   when action = 16 then signal stderror
  2568.   otherwise signal arexxerror
  2569. end
  2570. signal editautomenu
  2571.  
  2572. showautooptions:
  2573. if mailbox.isOn = 1 then call autoIsOn(); else call autoIsOff()
  2574. if onDemand ~= '' then call autoOnDemand(mailbox.onDemand)
  2575. call autoTelNumber(mailbox.telNumber)
  2576. if announce ~= '' then
  2577.   if mailbox.announce = 1 then call announceIsOn(); else call announceIsOff()
  2578. return
  2579.  
  2580. autoIsOn:
  2581. 'playvoice' 'avm:voices/AutoIsOn'
  2582. action = rc
  2583. select
  2584.   when action = 0 then nop
  2585.   when action = 1 then nop
  2586.   when action = 4 then signal stdfax
  2587.   when action = 5 then signal stddata
  2588.   when action = 8 then signal stdbusy
  2589.   when action = 12 then signal stdabort
  2590.   when action = 14 then signal stderror
  2591.   when action = 16 then signal stderror
  2592.   otherwise signal arexxerror
  2593. end
  2594.  
  2595. 'flushphonebuffer'
  2596. return
  2597.  
  2598. autoIsOff:
  2599. 'playvoice' 'avm:voices/autoIsOff'
  2600. action = rc
  2601. select
  2602.   when action = 0 then nop
  2603.   when action = 1 then nop
  2604.   when action = 4 then signal stdfax
  2605.   when action = 5 then signal stddata
  2606.   when action = 8 then signal stdbusy
  2607.   when action = 12 then signal stdabort
  2608.   when action = 14 then signal stderror
  2609.   when action = 16 then signal stderror
  2610.   otherwise signal arexxerror
  2611. end
  2612.  
  2613. 'flushphonebuffer'
  2614. return
  2615.  
  2616. announceIsOn:
  2617. 'playvoice' 'avm:voices/AnnounceIsOn'
  2618. action = rc
  2619. select
  2620.   when action = 0 then nop
  2621.   when action = 1 then nop
  2622.   when action = 4 then signal stdfax
  2623.   when action = 5 then signal stddata
  2624.   when action = 8 then signal stdbusy
  2625.   when action = 12 then signal stdabort
  2626.   when action = 14 then signal stderror
  2627.   when action = 16 then signal stderror
  2628.   otherwise signal arexxerror
  2629. end
  2630.  
  2631. 'flushphonebuffer'
  2632. return
  2633.  
  2634. announceIsOff:
  2635. 'playvoice' 'avm:voices/AnnounceIsOff'
  2636. action = rc
  2637. select
  2638.   when action = 0 then nop
  2639.   when action = 1 then nop
  2640.   when action = 4 then signal stdfax
  2641.   when action = 5 then signal stddata
  2642.   when action = 8 then signal stdbusy
  2643.   when action = 12 then signal stdabort
  2644.   when action = 14 then signal stderror
  2645.   when action = 16 then signal stderror
  2646.   otherwise signal arexxerror
  2647. end
  2648.  
  2649. 'flushphonebuffer'
  2650. return
  2651.  
  2652. autoOnDemand:
  2653. procedure
  2654. parse arg number
  2655.  
  2656. 'playvoice' 'avm:voices/AutoOnDemand'
  2657. action = rc
  2658. select
  2659.   when action = 0 then nop
  2660.   when action = 1 then nop
  2661.   when action = 4 then signal stdfax
  2662.   when action = 5 then signal stddata
  2663.   when action = 8 then signal stdbusy
  2664.   when action = 12 then signal stdabort
  2665.   when action = 14 then signal stderror
  2666.   when action = 16 then signal stderror
  2667.   otherwise signal arexxerror
  2668. end
  2669.  
  2670. call playNumber(number)
  2671.  
  2672. 'flushphonebuffer'
  2673. return
  2674.  
  2675. autoTelNumber:
  2676. procedure
  2677. parse arg number
  2678.  
  2679. 'playvoice' 'avm:voices/AutoTelNumber'
  2680. action = rc
  2681. select
  2682.   when action = 0 then nop
  2683.   when action = 1 then nop
  2684.   when action = 4 then signal stdfax
  2685.   when action = 5 then signal stddata
  2686.   when action = 8 then signal stdbusy
  2687.   when action = 12 then signal stdabort
  2688.   when action = 14 then signal stderror
  2689.   when action = 16 then signal stderror
  2690.   otherwise signal arexxerror
  2691. end
  2692.  
  2693. call playNumber(number)
  2694.  
  2695. 'flushphonebuffer'
  2696. return
  2697.  
  2698. /* TITLE: avm:rexx/retrievemessages.avm */
  2699. aaretrievemessages:
  2700. procedure
  2701. parse arg mailbox, isOutgoing, whichMailbox
  2702.  
  2703. logs = showdir(logFile(mailbox, ''))
  2704. numlogs = words(logs)
  2705. currentlog = 1
  2706.  
  2707. retrievemessagesnext:
  2708. if currentlog > numlogs then signal retrievemessagesdone
  2709. currentHandle = word(logs, currentLog)
  2710. call loadLogEntry(mailbox, currentHandle)
  2711. if (isOutgoing & ( log.returnRetry = '' | log.returnRetry = 0 | (upper(log.origMailbox) ~= upper(whichMailbox) & upper(log.origMailbox) ~= 'ANONYMOUS'))) then do
  2712.   currentLog = currentLog + 1
  2713.   signal retrieveMessagesNext
  2714. end
  2715.  
  2716. retrievemessagesagain:
  2717. logtype = upper(log.type)
  2718. if logtype = 'FAX' then signal isfax
  2719. else if logtype = 'VOICE' then signal isvoice
  2720. else signal isunknown
  2721.  
  2722. isfax:
  2723. 'playvoice' 'avm:voices/FaxMessage'
  2724. action = rc
  2725. select
  2726.   when action = 0 then nop
  2727.   when action = 1 then nop
  2728.   when action = 4 then signal stdfax
  2729.   when action = 5 then signal stddata
  2730.   when action = 8 then signal stdbusy
  2731.   when action = 12 then signal stdabort
  2732.   when action = 14 then signal stderror
  2733.   when action = 16 then signal stderror
  2734.   otherwise signal arexxerror
  2735. end
  2736. signal aftertype
  2737.  
  2738. isvoice:
  2739. 'playbeep' '3000' '0' '4'
  2740. action = rc
  2741. select
  2742.   when action = 0 then nop
  2743.   when action = 1 then nop
  2744.   when action = 4 then nop
  2745.   when action = 5 then nop
  2746.   when action = 8 then nop
  2747.   when action = 12 then signal stdabort
  2748.   when action = 14 then signal stderror
  2749.   when action = 16 then signal stderror
  2750.   otherwise signal arexxerror
  2751. end
  2752.  
  2753. 'playvoice' voiceFile(mailbox, log.filename)
  2754. action = rc
  2755. select
  2756.   when action = 0 then nop
  2757.   when action = 1 then nop
  2758.   when action = 4 then nop
  2759.   when action = 5 then nop
  2760.   when action = 8 then nop
  2761.   when action = 12 then signal stdabort
  2762.   when action = 14 then nop
  2763.   when action = 16 then nop
  2764.   otherwise signal arexxerror
  2765. end
  2766.  
  2767. 'flushphonebuffer'
  2768.  
  2769. 'playbeep' '3000' '0' '4'
  2770. action = rc
  2771. select
  2772.   when action = 0 then nop
  2773.   when action = 1 then nop
  2774.   when action = 4 then nop
  2775.   when action = 5 then nop
  2776.   when action = 8 then nop
  2777.   when action = 12 then signal stdabort
  2778.   when action = 14 then signal stderror
  2779.   when action = 16 then signal stderror
  2780.   otherwise signal arexxerror
  2781. end
  2782. signal aftertype
  2783.  
  2784. isunknown:
  2785. 'playvoice' 'avm:voices/UnknownMessage'
  2786. action = rc
  2787. select
  2788.   when action = 0 then nop
  2789.   when action = 1 then nop
  2790.   when action = 4 then signal stdfax
  2791.   when action = 5 then signal stddata
  2792.   when action = 8 then signal stdbusy
  2793.   when action = 12 then signal stdabort
  2794.   when action = 14 then signal stderror
  2795.   when action = 16 then signal stderror
  2796.   otherwise signal arexxerror
  2797. end
  2798. signal aftertype
  2799.  
  2800. aftertype:
  2801. call aapresentmenu('avm:voices/RetrieveMessages', '012345678#*', '3')
  2802. action = result
  2803. select
  2804.   when action = '=0' then signal aftertype
  2805.   when action = '=1' then signal retrievemessagesagain
  2806.   when action = '=2' then do; call playtimedate(); end
  2807.   when action = '=3' then do; call playtelcidnumber(); end
  2808.   when action = '=4' then signal processNextMessage
  2809.   when action = '=5' then do; address rexx 'delete' mailbox currentHandle; signal processNextMessage; end
  2810.   when action = '=6' then do; if isOutgoing = 0 then address rexx 'archive' mailbox currentHandle; else address rexx 'archiveoutgoing' mailbox currentHandle; signal processNextMessage; end
  2811.   when action = '=7' then do; call forwardmessage(mailbox, currentHandle); end
  2812.   when action = '=8' then do; call replymessage(mailbox, currentHandle); end
  2813.   when action = '=9' then nop
  2814.   when action = '=#' then do; return; end
  2815.   when action = '=*' then signal answervoiceDone
  2816.   when action = 4 then signal stdfax
  2817.   when action = 5 then signal stddata
  2818.   when action = 8 then signal stdbusy
  2819.   when action = 10 then signal answerVoiceDone
  2820.   when action = 12 then signal stdabort
  2821.   when action = 14 then signal stderror
  2822.   when action = 16 then signal stderror
  2823.   otherwise signal arexxerror
  2824. end
  2825. signal aftertype
  2826.  
  2827. processNextMessage:
  2828. currentLog = currentLog + 1
  2829. signal retrievemessagesnext
  2830.  
  2831. playtimedate:
  2832. actualTime = convertToTime(log.time)
  2833. actualDate = convertToDate(log.time)
  2834. call playTime(actualTime)
  2835. actualDate = date('s', actualDate) /* convert to sorted */
  2836. call playDate(actualDate)
  2837.  
  2838. 'flushphonebuffer'
  2839.  
  2840. return
  2841.  
  2842. playtelcidnumber:
  2843. 'playvoice' 'avm:voices/cidnumber'
  2844. action = rc
  2845. select
  2846.   when action = 0 then nop
  2847.   when action = 1 then nop
  2848.   when action = 4 then signal stdfax
  2849.   when action = 5 then signal stddata
  2850.   when action = 8 then signal stdbusy
  2851.   when action = 12 then signal stdabort
  2852.   when action = 14 then signal stderror
  2853.   when action = 16 then signal stderror
  2854.   otherwise signal arexxerror
  2855. end
  2856.  
  2857. if symbol('log.cidnumber') = 'VAR' then
  2858.   call playNumber(log.cidnumber)
  2859.  
  2860. 'flushphonebuffer'
  2861.  
  2862. 'playvoice' 'avm:voices/returnnumber'
  2863. action = rc
  2864. select
  2865.   when action = 0 then nop
  2866.   when action = 1 then nop
  2867.   when action = 4 then signal stdfax
  2868.   when action = 5 then signal stddata
  2869.   when action = 8 then signal stdbusy
  2870.   when action = 12 then signal stdabort
  2871.   when action = 14 then signal stderror
  2872.   when action = 16 then signal stderror
  2873.   otherwise signal arexxerror
  2874. end
  2875.  
  2876. if symbol('log.returnnumber') = 'VAR' then
  2877.   call playNumber(log.returnnumber)
  2878.  
  2879. 'flushphonebuffer'
  2880. return
  2881.  
  2882. retrievemessagesdone:
  2883. 'playvoice' 'avm:voices/NoMoreMessages'
  2884. action = rc
  2885. select
  2886.   when action = 0 then nop
  2887.   when action = 1 then nop
  2888.   when action = 4 then signal stdfax
  2889.   when action = 5 then signal stddata
  2890.   when action = 8 then signal stdbusy
  2891.   when action = 12 then signal stdabort
  2892.   when action = 14 then signal stderror
  2893.   when action = 16 then signal stderror
  2894.   otherwise signal arexxerror
  2895. end
  2896. return
  2897.  
  2898. replyMessage:
  2899. procedure
  2900. parse arg mailbox, magicCookie
  2901. call loadLogEntry(mailbox, magicCookie)
  2902. number = log.returnNumber
  2903. if number = '' then number = log.cidNumber
  2904. handle = makeUniqueFile()
  2905. sent = sendMessageTo('Outgoing', mailbox, number, handle, 'Voice', voiceFile(mailbox, 'Introduction'), log.cidNumber, log.cidName)
  2906.  
  2907. return
  2908.  
  2909. forwardMessage:
  2910. procedure
  2911. parse arg mailbox, magicCookie
  2912. call loadLogEntry(mailbox, magicCookie)
  2913.  
  2914. if verify(log.fileName, '/:', 'M') = 0 then
  2915.   address command 'copy >nil: <nil:' voiceFile(mailbox, log.fileName) || '#?' voiceFile('Outgoing', '')
  2916. sent = sendMessageTo('Outgoing', mailbox, '', log.fileName, log.type, voiceFile(mailbox, 'Introduction'), log.cidName, log.cidNumber)
  2917. return
  2918.  
  2919. /* TITLE: avm:rexx/sendmessageto.avm */
  2920. sendMessageTo:
  2921. procedure
  2922. parse arg mailbox, originMailbox, number, actualFilename, fileType, introFileName, acidName, acidNumber
  2923. handle = makeUniqueFile()
  2924. call initLogEntry()
  2925. log.returnNumber = number
  2926. log.filename = actualFilename
  2927. log.type = fileType; log.returnSendFunc = 'DefaultSender'
  2928. log.returnRetry = 3; log.returnInterval = 5
  2929. log.origMailbox = originMailbox
  2930. log.altFileName = introFileName; log.cidName = acidName; log.cidNumber = acidNumber
  2931.  
  2932. if upper(log.type) = 'VOICE' & ~exists(voiceFile(mailbox, log.fileName)) then call smNeedToRecordOut
  2933. if ~exists(voiceFile(mailbox, log.altFileName)) then call smNeedToRecordIntro
  2934. if log.returnNumber = '' then do; call smNeedToEnterTel(); signal sendMessageToMenu; end
  2935.  
  2936. 'playvoice' 'avm:voices/numberToSendTo'
  2937. action = rc
  2938. select
  2939.   when action = 0 then nop
  2940.   when action = 1 then nop
  2941.   when action = 4 then do; call cleanSendMessageTo(); signal stdfax; end
  2942.   when action = 5 then do; call cleanSendMessageTo(); signal stddata; end
  2943.   when action = 8 then do; call cleanSendMessageTo(); signal stdbusy; end
  2944.   when action = 12 then do; call cleanSendMessageTo(); signal stdabort; end
  2945.   when action = 14 then do; call cleanSendMessageTo(); signal stderror; end
  2946.   when action = 16 then do; call cleanSendMessageTo(); signal stderror; end
  2947.   otherwise signal arexxerror
  2948. end
  2949.  
  2950. call playNumber(log.returnNumber)
  2951.  
  2952. 'flushphonebuffer'
  2953.  
  2954. sendMessageToMenu:
  2955. call aapresentmenu('avm:voices/editSendMessage', '01234#*', '3')
  2956. action = result
  2957. select
  2958.   when action = '=0' then signal sendMessageToMenu
  2959.   when action = '=1' then do; call playNumber(log.returnNumber); log.returnNumber = getNumber(); signal sendMessageToMenu; end
  2960.   when action = '=2' then do; if upper(log.type) = 'VOICE' then call recordMessage(voiceFile(mailbox, log.filename)); signal sendMessageToMenu; end
  2961.   when action = '=3' then do; call editIntro(); signal sendMessageToMenu; end
  2962.   when action = '=4' then do; if smCanSend() then do; call saveLogEntry(mailbox, handle); return 1; end; else signal sendMessageToMenu; end
  2963.   when action = '=5' then nop
  2964.   when action = '=6' then nop
  2965.   when action = '=7' then nop
  2966.   when action = '=8' then nop
  2967.   when action = '=9' then nop
  2968.   when action = '=#' then do; call cleanSendMessageTo(); return 0; end
  2969.   when action = '=*' then do; call cleanSendMessageTo(); signal answerVoiceDone; end
  2970.   when action = 4 then do; call cleanSendMessageTo(); signal stdfax; end
  2971.   when action = 5 then do; call cleanSendMessageTo(); signal stddata; end
  2972.   when action = 8 then do; call cleanSendMessageTo(); signal stdbusy; end
  2973.   when action = 10 then do; call cleanSendMessageTo(); signal answerVoiceDone; end
  2974.   when action = 12 then do; call cleanSendMessageTo(); signal stdabort; end
  2975.   when action = 14 then do; call cleanSendMessageTo(); signal stderror; end
  2976.   when action = 16 then do; call cleanSendMessageTo(); signal stderror; end
  2977.   otherwise signal arexxerror
  2978. end
  2979. call cleanSendMessageTo(); return 0
  2980.  
  2981. cleanSendMessageTo:
  2982. if verify(log.fileName, '/:', 'M') = 0 then
  2983.   address command 'delete >nil: <nil: quiet' voiceFile('Outgoing', log.fileName) || '#?'
  2984. if verify(log.altFileName, '/:', 'M') = 0 then
  2985.   address command 'delete >nil: <nil: quiet' voiceFile('Outgoing', log.altFileName) || '#?'
  2986. return
  2987.  
  2988. smNeedToRecordOut:
  2989. 'playvoice' 'avm:voices/NeedToRecordOutgoing'
  2990. action = rc
  2991. select
  2992.   when action = 0 then nop
  2993.   when action = 1 then nop
  2994.   when action = 4 then do; call cleanSendMessageTo(); signal stdfax; end
  2995.   when action = 5 then do; call cleanSendMessageTo(); signal stddata; end
  2996.   when action = 8 then do; call cleanSendMessageTo(); signal stdbusy; end
  2997.   when action = 12 then do; call cleanSendMessageTo(); signal stdabort; end
  2998.   when action = 14 then do; call cleanSendMessageTo(); signal stderror; end
  2999.   when action = 16 then do; call cleanSendMessageTo(); signal stderror; end
  3000.   otherwise signal arexxerror
  3001. end
  3002.  
  3003. 'flushphonebuffer'
  3004. return
  3005.  
  3006. smNeedToRecordIntro:
  3007. 'playvoice' 'avm:voices/NeedToRecordIntro'
  3008. action = rc
  3009. select
  3010.   when action = 0 then nop
  3011.   when action = 1 then nop
  3012.   when action = 4 then do; call cleanSendMessageTo(); signal stdfax; end
  3013.   when action = 5 then do; call cleanSendMessageTo(); signal stddata; end
  3014.   when action = 8 then do; call cleanSendMessageTo(); signal stdbusy; end
  3015.   when action = 12 then do; call cleanSendMessageTo(); signal stdabort; end
  3016.   when action = 14 then do; call cleanSendMessageTo(); signal stderror; end
  3017.   when action = 16 then do; call cleanSendMessageTo(); signal stderror; end
  3018.   otherwise signal arexxerror
  3019. end
  3020.  
  3021. 'flushphonebuffer'
  3022. return
  3023.  
  3024. smNeedToEnterTel:
  3025. 'playvoice' 'avm:voices/NeedToEnterTel'
  3026. action = rc
  3027. select
  3028.   when action = 0 then nop
  3029.   when action = 1 then nop
  3030.   when action = 4 then do; call cleanSendMessageTo(); signal stdfax; end
  3031.   when action = 5 then do; call cleanSendMessageTo(); signal stddata; end
  3032.   when action = 8 then do; call cleanSendMessageTo(); signal stdbusy; end
  3033.   when action = 12 then do; call cleanSendMessageTo(); signal stdabort; end
  3034.   when action = 14 then do; call cleanSendMessageTo(); signal stderror; end
  3035.   when action = 16 then do; call cleanSendMessageTo(); signal stderror; end
  3036.   otherwise signal arexxerror
  3037. end
  3038.  
  3039. 'flushphonebuffer'
  3040. return
  3041.  
  3042. editIntro:
  3043. call aapresentmenu('avm:voices/EditIntro', '0123#*', '3')
  3044. action = result
  3045. select
  3046.   when action = '=0' then signal editIntro
  3047.   when action = '=1' then do; log.altFileName = voiceFile(log.origMailbox, 'Introduction'); end
  3048.   when action = '=2' then do; log.altFileName = makeUniqueFile(); end
  3049.   when action = '=3' then do; call recordMessage(voiceFile(mailbox, log.altFileName)); end
  3050.   when action = '=4' then nop
  3051.   when action = '=5' then nop
  3052.   when action = '=6' then nop
  3053.   when action = '=7' then nop
  3054.   when action = '=8' then nop
  3055.   when action = '=9' then nop
  3056.   when action = '=#' then do; return; end
  3057.   when action = '=*' then do; call cleanSendMessageTo(); signal answerVoiceDone; end
  3058.   when action = 4 then do; call cleanSendMessageTo(); signal stdfax; end
  3059.   when action = 5 then do; call cleanSendMessageTo(); signal stddata; end
  3060.   when action = 8 then do; call cleanSendMessageTo(); signal stdbusy; end
  3061.   when action = 10 then do; call cleanSendMessageTo(); signal answerVoiceDone; end
  3062.   when action = 12 then do; call cleanSendMessageTo(); signal stdabort; end
  3063.   when action = 14 then do; call cleanSendMessageTo(); signal stderror; end
  3064.   when action = 16 then do; call cleanSendMessageTo(); signal stderror; end
  3065.   otherwise signal arexxerror
  3066. end
  3067. signal editIntro
  3068.  
  3069. smCanSend:
  3070. if log.returnNumber = '' then do; call smNeedToEnterTel(); return 0; end
  3071. if upper(log.type) = 'VOICE' & ~exists(voiceFile(mailbox, log.fileName)) then do; call smNeedToRecordOut(); return 0; end
  3072. return 1
  3073.  
  3074.  
  3075.  
  3076. return
  3077.  
  3078. aaCallSysop:
  3079. procedure expose mailbox. mailbox calledSysop
  3080. if mailbox.autoforwardscript ~= "" & mailbox.autoforward ~= "" then do
  3081.      calledSysop = 1
  3082.      handle = makeUniqueFile()
  3083.      call initLogEntry(); log.origmailbox = mailbox
  3084.      log.filename = 'avm:voices/autoforward'; log.type = 'voice'
  3085.      log.returnsendfunc = mailbox.autoforwardscript; log.returninterval = 5
  3086.      log.returnretry = 3; log.returnnumber = mailbox.autoforward; log.altFileName = voiceFile(mailbox, 'Introduction')
  3087.      call saveLogEntry('Outgoing', handle)
  3088.  
  3089. 'playvoice' 'avm:voices/BeingForwarded'
  3090. action = rc
  3091. select
  3092.   when action = 0 then nop
  3093.   when action = 1 then nop
  3094.   when action = 4 then signal stdfax
  3095.   when action = 5 then signal stddata
  3096.   when action = 8 then signal stdbusy
  3097.   when action = 12 then signal stdabort
  3098.   when action = 14 then signal stderror
  3099.   when action = 16 then signal stderror
  3100.   otherwise signal arexxerror
  3101. end
  3102.  
  3103.     call playNumber(mailbox.autoforward)
  3104.  
  3105. 'flushphonebuffer'
  3106.  
  3107. end
  3108. return
  3109.  
  3110. announceForwardNumber:
  3111. 'playvoice' 'avm:voices/AnnounceForward'
  3112. action = rc
  3113. select
  3114.   when action = 0 then nop
  3115.   when action = 1 then nop
  3116.   when action = 4 then signal stdfax
  3117.   when action = 5 then signal stddata
  3118.   when action = 8 then signal stdbusy
  3119.   when action = 12 then signal stdabort
  3120.   when action = 14 then signal stderror
  3121.   when action = 16 then signal stderror
  3122.   otherwise signal arexxerror
  3123. end
  3124.  
  3125. call playNumber(mailbox.autoforward)
  3126.  
  3127. 'playvoice' 'avm:voices/AnnounceAgain'
  3128. action = rc
  3129. select
  3130.   when action = 0 then nop
  3131.   when action = 1 then nop
  3132.   when action = 4 then signal stdfax
  3133.   when action = 5 then signal stddata
  3134.   when action = 8 then signal stdbusy
  3135.   when action = 12 then signal stdabort
  3136.   when action = 14 then signal stderror
  3137.   when action = 16 then signal stderror
  3138.   otherwise signal arexxerror
  3139. end
  3140. return
  3141.  
  3142. aaPageSysop:
  3143. procedure expose mailbox. mailbox pagedSysop
  3144. if mailbox.autopagescript ~= "" & mailbox.autopage ~= "" then do
  3145.      pagedSysop = 1
  3146.      handle = makeUniqueFile()
  3147.      call initLogEntry(); log.origmailbox = mailbox
  3148.      log.filename = 'avm:voices/autoforward'; log.type = 'voice'
  3149.      log.returnsendfunc = mailbox.autopagescript; log.returninterval = 5
  3150.      log.returnretry = 3; log.returnnumber = mailbox.autopage; log.altFileName = voiceFile(mailbox, 'Introduction')
  3151.      call saveLogEntry('Outgoing', handle)
  3152. end
  3153. return
  3154.  
  3155.  
  3156. stdabort:
  3157. exit
  3158.  
  3159. stdbusy:
  3160. exit
  3161.  
  3162. stderror:
  3163. exit
  3164.  
  3165. stdtimedout:
  3166. exit
  3167.  
  3168. stdfaxinstruct:
  3169. 'playvoice' 'avm:voices/FaxStarting'
  3170. action = rc
  3171. select
  3172.   when action = 0 then nop
  3173.   when action = 1 then do; call checkifabort; end
  3174.   when action = 4 then nop
  3175.   when action = 5 then nop
  3176.   when action = 8 then signal stdbusy
  3177.   when action = 12 then signal stdabort
  3178.   when action = 14 then nop
  3179.   when action = 16 then nop
  3180.   otherwise signal arexxerror
  3181. end
  3182.  
  3183. stdfax:
  3184. faxscript = getclip(address() || 'FAXSCRIPT')
  3185. if faxscript = '' then faxscript = 'handlefax'
  3186. if symbol('mailbox') = 'VAR' then address rexx faxscript address() mailbox
  3187. else address rexx faxscript address() 'anonymous'
  3188. exit
  3189.  
  3190. stddatainstruct:
  3191. 'playvoice' 'avm:voices/DataStarting'
  3192. action = rc
  3193. select
  3194.   when action = 0 then nop
  3195.   when action = 1 then do; call checkifabort; end
  3196.   when action = 4 then nop
  3197.   when action = 5 then nop
  3198.   when action = 8 then signal stdbusy
  3199.   when action = 12 then signal stdabort
  3200.   when action = 14 then nop
  3201.   when action = 16 then nop
  3202.   otherwise signal arexxerror
  3203. end
  3204.  
  3205. stddata:
  3206. datascript = getclip(address() || 'DATASCRIPT')
  3207. if datascript = '' then datascript = 'handledata'
  3208. if symbol('mailbox') = 'VAR' then address rexx datascript address() mailbox
  3209. else address rexx datascript address()
  3210. exit
  3211.  
  3212. checkifabort:
  3213. 'readnkeys' '1' '3'
  3214. action = rc
  3215. if action = 0 then value = result
  3216. select
  3217.   when action = 0 then do; if value = '*' then signal stdabort; end
  3218.   when action = 4 then nop
  3219.   when action = 5 then nop
  3220.   when action = 8 then signal stdbusy
  3221.   when action = 10 then nop
  3222.   when action = 12 then signal stdabort
  3223.   when action = 14 then signal stderror
  3224.   when action = 16 then signal stderror
  3225.   otherwise signal arexxerror
  3226. end
  3227. return
  3228.  
  3229.